你能帮我解决问题吗?在第二个变量中,我不能简单地使用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();
答案 0 :(得分:0)
数据库查询返回集合并且whereIn接受数组因此首先将集合更改为数组,您可以使用以下代码实现它
$filterrecord
= RecordHistory::select('profile_id', 'membership_type')
->whereIn('profile_id', $querys->toArray())
->get();
答案 1 :(得分:0)
如果您在查询中使用whereIn
,则可以通过逗号分隔
$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)