Решаю такую задачу. Есть Разделы (Partition), рубрики (Rubric), записи (Post).
Нужно получить 10 записей в каждой рубрике каждого раздела. Делал с помощью связей примерно так:
$partitions = Partition::with(['rubrics', 'posts'])->get();
В таком случае получаю всего 10 записей, а не 10 записей в каждой рубрике.
Переделал так:
$partitions = Partition::with(['rubrics'])->get();
foreach($partitions as $partition) {
foreach($partition->rubrics as $rubric) {
$rubric->load(['posts']);
}
}
Так работает как надо, но запросов получается слишком много, а рубрик с ростом проекта будет все больше и больше.
Возможно ли решить данную задачу с помощью связей Eloquent? Если да, то как? А если нет - в какую сторону тогда копать?
Я так понял вы хотите через реляцию "жадной" выгрузкой забрать данные. Вложенные реляции просто нужно указать через точку:
$partitions = Partition::with('rubrics.posts')->get();
А если по 10 записей, попробуйте следующее:
$partitions = Partition::with(['rubrics.posts' => function ($query) {
$query->limit(10);
}])->get();
P.S. В одном примере реляция rubrics, в другом rubric, не понятно какие настоящие из вашего вопроса.
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости