【发布时间】:2021-06-28 19:23:23
【问题描述】:
我正在尝试对一个集合执行多个 sortBy,但似乎无法正常工作:
$myCollection = collect([
['foo' => 3, 'bar' => null, 'active' => 1],
['foo' => 2, 'bar' => null, 'active' => 1],
['foo' => 1, 'bar' => 1, 'active' => 1],
])->sortBy('foo')->sortBy('bar')->sortBy('active');
结果:
Illuminate\Support\Collection {#417 ▼
#items: array:3 [▼
0 => array:3 [▼
"foo" => 3
"bar" => null
"active" => 1
]
1 => array:3 [▼
"foo" => 2
"bar" => null
"active" => 1
]
2 => array:3 [▼
"foo" => 1
"bar" => 1
"active" => 1
]
]
}
首先按活动正确排序(它们都相同 = 1)
然后按“bar”正确排序(null
然后 sortBy('foo') 失败,因为 (2
Illuminate\Support\Collection {#417 ▼
#items: array:3 [▼
0 => array:3 [▼
"foo" => 2
"bar" => null
"active" => 1
]
1 => array:3 [▼
"foo" => 3
"bar" => null
"active" => 1
]
2 => array:3 [▼
"foo" => 1
"bar" => 1
"active" => 1
]
]
}
这是我为演示所做的示例。在我的真实场景中,我使用 Collection::macro 和自定义函数回调来比较日期......但即使在这个简单的例子中,事情看起来也不起作用。
【问题讨论】:
标签: laravel sorting collections