Laravel 5,join子句中的派生表?

clz*_*ola 5 derived-table left-join query-builder 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;
Run Code Online (Sandbox Code Playgroud)

我不知道如何用Eloquent写这个.

例如:

Blog::select("*")->leftJoin( /* Here goes derived table */ )->get()
Run Code Online (Sandbox Code Playgroud)

我该如何做到这一点?

haa*_*kym 9

我个人只是使​​用流畅的查询构建器,尝试这一点,看看它是如何工作的:

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();
Run Code Online (Sandbox Code Playgroud)

您可以随时换->get()->toSql()倾倒了查询,如果你看到任何错误调整.