Решаю такую задачу. Есть Разделы (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
, не понятно какие настоящие из вашего вопроса.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Пытаюсь заменить в строке пробелы повторяющиеся два и более раза на одинарные, вот так:
Хочу добавить в бд запись пишу в адресную строку http://project-546564codeanyapp
У меня есть 51 столбец, как можно оптимизировать этот код,чтобы не вбивать все столбцы? -- Получение 50 то что до | SELECT SUBSTRING_INDEX('50|100', '|', 1);