2014-07-13 94 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