Laravel whereIn数组重复

时间:2015-12-30 01:23:28

标签: laravel cookies

$item_ids = Cookie::get('name');

if(!is_array($item_ids)){
    $items = Item::find($item_ids)->get();
}
$items = DB::table('items')
            ->whereIn('id', $item_ids )
            ->get();

dd($items);

enter image description here

$item_ids in dd($item_ids)
array:5 [▼
  0 => "2"
  1 => "2"
  2 => "2"
  3 => "4"
  4 => "6"
]

正如你在$ item_ids中看到的那样,2重复了3次而我只得到了一次。如何重复3次。是否有任何查询生成器可以做到这一点?

1 个答案:

答案 0 :(得分:1)

“查询”构建器使用id = 2方法在数据库中查找whereIn。数据库中只有一个id为2的项目,因此它只返回一条记录。

但是,您可以再次遍历所有ID并从数据库结果中提取这些ID。为每个id执行此操作,以便为同一ID获取多个结果。

这样的事情:

$item_ids = Cookie::get('name');

if(!is_array($item_ids)){
    $items = Item::find($item_ids)->get();
}else{
    $items = [];
    $dbItems = Item::whereIn('id',$item_ids)->get();
    foreach($item_ids as $id){
        $items[] = $dbItems->first(function ($key, $value) use ($id) {
            return $value->id == $id;
        });
    }
}

dd($items);