查询构建器/ laravel中具有distinct子句的子查询

时间:2014-07-13 12:24:13

标签: laravel query-builder

SELECT * FROM `movie_list`
WHERE `movie_id` IN 
(SELECT DISTINCT movie_id FROM `movie_genre` where genre_id in (12,18,53)) 
AND rated IN 
('Not Rated','N/A')

如何将上述内容转换为查询构建器语法:

$movies = DB::table('movie_list')
                  ->whereIn('movie_id',function($query){
                      $query->select.....

                  })->get();

我有内在的:它是这样的:

DB::table('movie_genre')
                     ->whereIn('genre_id', array(12,18,53))
                     ->distinct()
                     ->get(array('movie_id'));

如何在查询的其余部分使用此结果?

1 个答案:

答案 0 :(得分:0)

你可以用Eloquent Models做得更顺畅,但假设你没有设置你的模型,这应该可以做到(未经测试)

$ids = DB::table('movie_genre')
        ->whereIn('genre_id', [12,18,33])
        ->distinct()
        ->get(['movie_id'])
        ->toArray();


$movies = DB::table('movie_list')
        ->whereIn('movie_id', array_values($ids))
        ->get();