哪里()

你可以使用 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() 对其进行过滤。然后,Collection 将尝试接收所有所需的属性。

Version >= 5.3

请注意,自 Laravel 5.3 以来,where() 方法将尝试在默认情况下松散地比较这些值。这意味着在搜索 (int)1 时,所有包含'1'的条目也将被返回。如果你不喜欢这种行为,可以使用 whereStrict() 方法。