Nic*_*icT 6 laravel eloquent laravel-collection
我有一个通过hasMany
-relation从数据库返回的集合。
$items = collect([
[
'ref' => 'efaef954',
'children' => collect([
[
'ref' => 'wetk4',
'order' => 1,
],
[
'ref' => 'wetk5',
'order' => 2,
],
[
'ref' => 'wetk6',
'order' => 3,
],
]),
],
[
'ref' => 'efgjlf954',
'children' => collect([
[
'ref' => 'wetk5',
'order' => 1,
],
[
'ref' => 'wetk6',
'order' => 2,
],
[
'ref' => 'wetk4',
'order' => 3,
],
]),
],
]);
Run Code Online (Sandbox Code Playgroud)
此$items
-collection 可以包含任意数量的带有子项的项目。这些孩子有一个特定的顺序,在它们被排序之前是随机的。
在我的用户界面中,我可以输入子项的引用以获取符合条件的父项。只有具有我输入的特定顺序的父项,例如wetk4
,wetk6
应该返回。
return $items->filter(fn ($item) => $item->children->contains('wetk4') && $item->children->contains('wetk6'))
Run Code Online (Sandbox Code Playgroud)
这将正确地为我提供带有子项的项目,但这并没有考虑到以下事实:考虑到某些项目将具有相同的子项,因此项目符合条件的顺序很重要。
我还没有找到一个优雅的解决方案,试图只使用集合函数。
小智 0
我想我会尝试使用宏来扩展 laravel 集合,您应该在其中实现自定义功能。之后该宏可以在任何 Laravel 集合上使用
更多详细信息请参见:https://laravel.com/docs/8.x/collections#extending-collections
归档时间: |
|
查看次数: |
119 次 |
最近记录: |