Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Вообщем проблема. Необходимо загрузить все категории с постами, но количество постов в каждой категории ограничить например 3мя.
Финт ушами ниже не пройдет так как лимит сразу ко сем постам применяется
Category::with(['posts' => function ($query) {
$query->orderBy('created_at', 'desc')
->limit(3);
}])
->get();
Кто сталкивался с такой проблемой?
PS сейчас сделано немного иначе, но вместо 1 запроса получается куча
foreach($categories as $category){
$posts = $category->postsPublic()->limit(3)->get();
foreach( $posts as $post){
///////////////////////////////////////
}
}
в разработке
Не в сети
здесь вина не элоквента, в самом SQL такой номер провернуть непросто. вот тут https://softonsofa.com/tweaking-eloquen … er-parent/ автор предлагает решение, предупреждаю заранее – очень грязное. и код написан под laravel 4.x, так что его ещё надо адаптировать.
если количество категорий не сильно большое, может проще оставить запросы в цикле, а проблему с нагрузкой решить путём кэширования результатов выборки?
Не в сети
Мда... Боюсь придется так оставить.
Сейчас сами категории закешированы. А вот посты не закешировать никак(хотя сам пост как единица закеширована). Нужна актуальность постов с точностью до минуты.
в разработке
Не в сети
Страницы 1