在 Laravel 集合中搜索

jho*_*oss 4 php laravel-5

我收藏了 150 件物品

 ...
 App\almacen {#1679
     id: 124,
     emp_id: 1,
     dst_id: 13,
     hora: 0,
     numMesa: 0,
     event_id: 1,
     created_at: "2018-01-22 11:41:03",
     updated_at: "2018-01-22 11:41:03",
   },
   App\almacen {#1680
     id: 125,
     emp_id: 1,
     dst_id: 11,
     hora: 0,
     numMesa: 0,
     event_id: 1,
     created_at: "2018-01-22 11:41:03",
     updated_at: "2018-01-22 11:41:03",
   },
   App\almacen {#1681
     id: 126,
     emp_id: 1,
     dst_id: 12,
     hora: 0,
     numMesa: 0,
     event_id: 1,
     created_at: "2018-01-22 11:41:03",
     updated_at: "2018-01-22 11:41:03",
   },
   App\almacen {#1682
     id: 127,
     emp_id: 1,
     dst_id: 20,
     hora: 0,
     numMesa: 0,
     event_id: 1,
     created_at: "2018-01-22 11:41:03",
     updated_at: "2018-01-22 11:41:03",
   },
   App\almacen {#1683
     id: 128,
     emp_id: 1,
     dst_id: 7,
     hora: 0,
     numMesa: 0,
     event_id: 1,
     created_at: "2018-01-22 11:41:03",
     updated_at: "2018-01-22 11:41:03",
   },
  ...
Run Code Online (Sandbox Code Playgroud)

我必须比较键 emp_id 和 dst_id 是否等于数字(例如 8),如果存在则返回“true”。有没有办法在不使用“foreach”并直接查看对象的情况下执行此操作?已经使用 contains()、search() 但总是返回“false”,即使该值确实存在

小智 7

您可以像这样使用where methodon :collections

$collection = collect([
    ['product' => 'Desk', 'price' => 200],
    ['product' => 'Chair', 'price' => 100],
    ['product' => 'Bookcase', 'price' => 150],
    ['product' => 'Door', 'price' => 100],
]);

$filtered = $collection->where('price', 100);

$filtered->all();
Run Code Online (Sandbox Code Playgroud)


小智 6

第一地点:

$exists = $items->firstWhere(['emp_id' => 8, 'dst_id' => 8]) !== null;
Run Code Online (Sandbox Code Playgroud)

第一的:

$needle = 8;
$exists = $items->first(function($item) use($needle) { 
      return $item->emp_id === $needle && $item->dst_id === $needle ;
 }) !== null;
Run Code Online (Sandbox Code Playgroud)

筛选:

$needle = 8;
$exists = $items->filter(function($item) use($needle) { 
      return $item->emp_id === $needle && $item->dst_id === $needle ;
 })->count() > 0;
Run Code Online (Sandbox Code Playgroud)