我有一个多维数组的集合。我只需要过滤具有特定颜色的项目,但是颜色字段在多维范围内。通常,它像$collection->where('color','green')
一样容易。
如何处理更复杂的WHERE
子句?
[
'product' => 'Desk',
'info' => [
'namespace' => 'green',
'key' => 'blue',
],
[
'namespace' => 'orange',
'key' => 'red',
],
]
],
[
'product' => 'Chair',
'info' => [
'namespace' => 'green',
'key' => 'blue',
],
[
'namespace' => 'purple',
'key' => 'pink',
],
]
],
在此数组中,如何获得键green
的所有值为info['namespace']
的产品?
$collection->where('info['namespace']','green')
基本上就是我想要的。
答案 0 :(得分:2)
我认为使用filter
收集方法会获得更好的结果(where
似乎并没有非常优雅地嵌套)。
Laravel Documentation on the filter method
示例:
$greenNamespaceCollection = $collection->filter(function ($value, $key) {
return collect($value['info'])->contains('namespace' 'green');
})