7

私はこのクエリを持っています:

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()

どうすればこれを達成できますか?

4

1 に答える 1

13

私は個人的に流暢なクエリビルダーを使用するだけで、これを試して、どのように機能するかを確認します。

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()てクエリをダンプし、間違いがあれば調整できます。

于 2015-05-17T12:14:48.657 に答える