Код: Выделить всё
$posts = array();
$allPosts = DB::table('post_categories')
->Join('posts', 'posts.id', '=', 'post_categories.posts_id')
->select('posts.title','posts.id','posts.body','posts.created_at')
->where('post_categories.categories_id','!=',5)
->orderBy('posts.created_at','desc')
->get();
foreach ($allPosts as $post){
$categories = DB::table('post_categories')
->Join('categories', 'categories.id', '=', 'post_categories.categories_id')
->select('categories.name','categories.id')
->where('post_categories.posts_id','=',$post->id)
->get();
$post->categories = $categories;
array_push($posts,$post);
}
Сообщения 1 – m post_categories m – 1 категории
первый запрос используется для получения сообщений без номера категории 5
второй используется для получения категорий в сообщении.
проблема в том, что у меня есть n +1 запрос из-за цикла for.
поэтому мне было интересно, есть ли лучший способ сделать это без цикла for
результат панели отладки:
скриншот панели отладки
Подробнее здесь: https://stackoverflow.com/questions/682 ... plex-query
Мобильная версия