Как использовать offset и limit для данных из связанных таблиц?

Я получаю список людей, работающих в конкретной компании, таким образом:

$retPersons = Company::findOrFail($referid)->persons; //$referid - номер компании
$retData = response()->json(['persons' => $retPersons, ... ]); //тут еще служебные данные передаю
return $retData;

Это я потом JSONом отправляю по AJAXу во VUE и там дальше разбираю в список. Сейчас я хочу сделать пагинацию во VUE и передавать только те данные которые относятся к определенной странице.

В другом контроллере, отвечающем за выдачу списка компаний - пагинация прекрасно получилась и работает хорошо:

$retCompany = Company::offset($count * ($id - 1))->limit($count)->get();

Как сделать пагинацию данных из связанной таблицы? Так не работает

$retPersons = Company::findOrFail($referid)->persons->offset($count * ($id - 1))->limit($count)->get();

Ругается - нет метода offset. Пробовал менять на skip - тоже ругается - нет метода skip.

В идеале составить такой запрос, чтобы mysql возвращала в ответ на него только пользователей конкретно в нужной странице пагинации. Так то можно было бы в сыром виде сделать запрос, но хочется научится Красноречивым пользоваться. Задача так то тривиальная


Ответы (1 шт):

Автор решения: Вячеслав Предеин

После persons нужны скобки - вызываем как метод

$retPersons = Company::findOrFail($referid)->persons()->offset($count * ($id - 1))->limit($count)->get();

Так работает

→ Ссылка