2015-05-17 2 views
3

У меня есть этот запрос:Laravel 5, производная таблица в статье о присоединении?

SELECT * FROM blog 
LEFT JOIN (
    SELECT blog_id, AVG(value) as blog_rating FROM blog_ratings 
    GROUP BY (blog_id) 
) T ON T.blog_id = blog.id; 

Я не знаю, как написать это с красноречивыми.

Для примера:

Blog::select("*")->leftJoin(/* Here goes derived table */)->get() 

Как это сделать?

ответ

4

Я лично просто использовать свободно построитель запросов, попробовать это и посмотреть, как это работает:

DB::table('blog') 
    ->select('*') 
    ->leftJoin(DB::raw('(SELECT blog_id, AVG(value) as blog_rating FROM blog_ratings 
    GROUP BY (blog_id) 
    ) as T'), function ($join) { 
     $join->on ('T.blog_id', '=', 'blog.id'); 
    }) 
    ->get(); 

Вы всегда можете поменять ->get() для ->toSql() сваливать из запроса и настройки, если вы видите какой-либо ошибки.

+1

Поскольку я не могу использовать DB :: таблицу, как это не даст мне модель (у меня есть отношения, которые необходимы для представления данных), я пришел с этим 'Blog :: LeftJoin (DB :: сырец ('(SELECT blog_id, AVG (значение) как blog_rating FROM blog_ratings GROUP BY (blog_id)) как T '), function ($ join) {$ join-> on (' T.blog_id ',' = ',' blog.id ') ;}) -> получить(); ' – clzola

 Смежные вопросы

  • Нет связанных вопросов^_^