каждой категории 5 последних новостей?
Ну можно в лоб перебором в массиве категории, а тут хочется както элегантно..
Ну тоесть есть моделька newsCategory - hasMany(newsArticle)
и моделька newsArticle - BelongsTo(newsCategory)
Ну вот всякие ->with(...) делают немного другое.... оно жешь загрузит для всех....
Я понимаю, что такого запроса MySQL невозможно создать, но мне интересно есть ли какието готовые решения для лары...
$category->news()->limit(5)->get()
Да, пасиб большое, по факту сделал так: $newsCategories = NewsCategory::all(); foreach ($newsCategories as $category) { $category->setRelations([ 'newsArticles' => $category ->newsArticles() ->orderBy('published_at', 'desc') ->limit(5) ->get() ] ); } Так будет правильнее - сразу саму связь заполнять
``` $newsCategories = NewsCategory::all() ->reduce(fn(array $acc, array $category) => array_merge($acc, array_merge($category, ['news' => $category->news()->limit(5)->get()]))); ```
мммммм..... выглядит круто, осталось понять как это работает - но это все вопросы к докам))) К замене форича редьюсом я пока не дошел)))
В данном случае не стоит Это к слову о твоем "не элегантно", хотя, возможно я просто не правильно интерпретирую это Но твой foreach куда более лучше
Элегантно это, в данном случае, не плодить 100 дополнительных массивов - а заполнить все данные в те же модели какраз.... Но форич на пребор функцией точно надо сделать - всетаки Функциональное програмирование надо тоже подтягивать, а то акромя анонимок иногда и usort ничем не пользуюсь
Чистым sql тогда :)
Это я прекрасно умею)))) Какраза хочу чтобы было болеее соврменненно фреймворково)))
А нужно ли? Ормки - зло
Обсуждают сегодня