Laravel 5,在连接子句中派生 table?
Laravel 5, Derived table in join clause?
我有这个查询:
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;
我不知道如何用Eloquent写这个。
例如:
Blog::select("*")->leftJoin( /* Here goes derived table */ )->get()
我该如何完成?
我个人只会使用流畅的查询生成器,试试看效果如何:
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()
以转储查询并在发现任何错误时进行调整。
我有这个查询:
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;
我不知道如何用Eloquent写这个。
例如:
Blog::select("*")->leftJoin( /* Here goes derived table */ )->get()
我该如何完成?
我个人只会使用流畅的查询生成器,试试看效果如何:
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()
以转储查询并在发现任何错误时进行调整。