whereIn 查询不工作 laravel

whereIn query not working laravel

你能帮我查询一下有什么问题吗?在第二个变量中,我不能简单地使用 whereIn 方法输出 blade 中的内容。我应该在 $filterrecord 变量中添加另一个 where,但经检查,它甚至没有通过。

控制器

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

whereIn 的第 2 个参数是 array.But 您的变量“$querys”是一个集合 object.convert 到列表数组 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)

数据库查询returnscollection,whereIn接受数组,所以先把collection转为数组,可以用下面的代码实现

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

如果您在查询中使用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();