查询生成器/laravel中具有distinct子句的子查询

查询生成器/laravel中具有distinct子句的子查询,laravel,query-builder,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') ->

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

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'));

DB::table'movie_list'->其中'movie_id',函数$query{$query->selectDB::raw'movie_id'->来自'movie_genre'->其中'genre_id',array12,18,53->distinct;}->分页5;
$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();