您可以使用where()方法从集合中选择某些项目。
$data = [ ['name' => 'Taylor', 'coffee_drinker' => true], ['name' => 'Matt', 'coffee_drinker' => true] ]; $matt = collect($data)->where('name', 'Matt');
这部分代码将从名称为“ Matt”的集合中选择所有项。在这种情况下,仅返回第二项。
就像Laravel中的大多数数组方法一样,它也where()支持搜索嵌套元素。让我们通过添加第二个数组来扩展上面的示例:
$data = [ ['name' => 'Taylor', 'coffee_drinker' => ['at_work' => true, 'at_home' => true]], ['name' => 'Matt', 'coffee_drinker' => ['at_work' => true, 'at_home' => false]] ]; $coffeeDrinkerAtHome = collect($data)->where('coffee_drinker.at_home', true);
这只会让泰勒返回,因为他在家中喝咖啡。如您所见,使用点符号支持嵌套。
当创建对象集合而不是数组时,也可以使用过滤这些对象where()。然后,集合将尝试接收所有所需的属性。
请注意,自Laravel 5.3起,该where()方法将默认尝试松散比较这些值。这意味着在搜索时(int)1,包含的所有条目'1'也会被返回。如果您不喜欢这种行为,则可以使用该whereStrict()方法。