2014-07-13 92 views
0
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') 

我如何转换上面的查询生成器的语法:子查询,在查询生成器/ distinct子句laravel

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

我如何使用这个结果与我的查询的其余部分?

回答

0

你可以这样做与雄辩的型号很多顺畅,但假设你没有你的模型设置,这应该做的伎俩(未经测试)

$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(); 
+0

DB ::表(“movie_list”) - >其中,( 'movie_id',函数($查询){ \t \t \t $查询 - >选择(DB ::原始( 'movie_id')) - >从( 'MOVIE_GENRE') - >其中( 'genre_id', array(12,18,53)) \t \t \t \t \t - > distinct(); \t \t}) - > paginate(5); – user3299182