whereIn查询不工作laravel

时间:2017-05-20 07:02:59

标签: php controller laravel-5.2

你能帮我解决问题吗?在第二个变量中,我不能简单地使用whereIn方法输出我的刀片中的东西。我应该在$ filterrecord变量中添加另一个,但是在检查时,它甚至没有经过。

控制器

$querys 
    = RecordHistory::select(DB::raw('profile_id, max(effective_date) as date, membership_type'))
        ->groupBy('profile_id')         
        ->orderBy('date', 'desc')
        ->get();

$filterrecord
    = RecordHistory::select('profile_id', 'membership_type')
    ->whereIn('profile_id', $querys)        
    ->get();

3 个答案:

答案 0 :(得分:0)

数据库查询返回集合并且whereIn接受数组因此首先将集合更改为数组,您可以使用以下代码实现它

 $filterrecord
        = RecordHistory::select('profile_id', 'membership_type')
        ->whereIn('profile_id', $querys->toArray())        
        ->get();

答案 1 :(得分:0)

如果您在查询中使用whereIn,则可以通过逗号分隔

传递多个ID
    $querys 
        = RecordHistory::select(DB::raw('profile_id, max(effective_date) as date, membership_type'))
            ->groupBy('profile_id')         
            ->orderBy('date', 'desc')
            ->get();
    $ids = array(); 
     foreach($querys as $item){
       $ids[]=$item->profile_id;
     }       
    $filterrecord
        = RecordHistory::select('profile_id', 'membership_type')
        ->whereIn('profile_id', $ids)        
        ->get();

答案 2 :(得分:-1)

whereIn的第2个参数是数组。但是你的变量“$ querys”是一个集合对象。将它转换为list profile_id的数组。

$ids = array();
foreach($querys as $item){
  $ids[]=$item->profile_id;
}

$ids = array(); 
foreach($querys as $item){
  $ids[]=$item['profile_id'];
}

并使用它:

->whereIn('profile_id', $ids)