要按类别层次过滤Laravel集合,你可以使用filter()
和where()
方法来实现。以下是一个示例代码:
$categories = [
[
'id' => 1,
'name' => 'Category 1',
'subcategories' => [
[
'id' => 1,
'name' => 'Subcategory 1-1',
],
[
'id' => 2,
'name' => 'Subcategory 1-2',
],
],
],
[
'id' => 2,
'name' => 'Category 2',
'subcategories' => [
[
'id' => 3,
'name' => 'Subcategory 2-1',
],
[
'id' => 4,
'name' => 'Subcategory 2-2',
],
],
],
];
$filteredCategories = collect($categories)->filter(function ($category) {
// 过滤条件:只保留子类别的id为奇数的类别
return collect($category['subcategories'])->where('id', '>', 0)->where('id', '%', 2)->isEmpty();
});
$filteredCategories->dump();
在上面的示例代码中,我们首先定义了一个包含类别和子类别的多维数组。然后,我们使用collect()
函数将数组转换为Laravel集合。然后,我们使用filter()
方法来过滤集合中的类别。在filter()
方法中,我们使用匿名函数定义了过滤条件,该条件仅保留子类别的id为奇数的类别。最后,我们使用dump()
方法来打印过滤后的结果。
这样,你就可以根据自己的需求来修改过滤条件,以适应你的实际情况。