2014-07-14 58 views
0

我在$ genreArr数组内的阵列,我希望它是在该行whithin功能(查询)可读内选择:阅读查询范围

if($genreArr){ 
     $movies = DB::table('movie_list')->whereIn('movie_id',function($query){  
      $query->select(DB::raw('movie_id')) 
         ->from('movie_genre') 
         ->whereIn('genre_id',$genreArr) 
         ->distinct(); 
     })->orderBy(DB::raw('RAND()'))->take(10)->get(); 
    } 

我怎么做,没有使用全局变量,我想传递一个变量作为第二PARAM旁边$查询和比它给了我这样那样的错误:

Missing argument 2 for MovieController::{closure}() 

回答

0

你应该调节封闭到use你想要的变量。

function ($query) use ($genreArr) { 
... ->whereIn('genre_id', $genreArr); 
} 
+0

这样做,谢谢 – user3299182

0

不知道whereIn方法是否会接受这一点。但不是使用闭包,而是使用另一个可调用的选项。即喜欢的东西

$obj = new SomeClass(); 
$obj->setGenreArray($genreArr); 

$movies = DB::table('movie_list')->whereIn('movie_id',array($obj, 'getQuery'))->orderBy(DB::raw('RAND()'))->take(10)->get(); 

然后你在查询生成器的东西将是getQuery方法里面,与获得的财产$this->genreArray