Laravel 的Collection
类 (v5.5) 有一种sortBy()
方法可以对所有内容进行排序,类似于使用 SQLORDER BY
语句,但有一个显着的区别:关系数据库在升序排序时会将NULL
值放在末尾(或至少 PostgreSQL 会),但是 Laravel 的sortBy()
方法将NULL
值放在首位。
那么,在使用该方法时,如何让这些NULL
值排在最后而不是排在最前面呢?请注意:我无法更改数据库查询本身!我唯一的选择是在 PHP 中对集合本身进行排序。在我的情况下,我绝对不能在数据库级别执行此操作。Collection::sortBy()
这里有一个关于 Stack Overflow 的类似问题,但是 OP 找到的解决方案有点像 hack,在我的情况下不起作用,因为我需要它来为 varchars 工作。
注意:我意识到sortBy()
第一个参数接受一个闭包,但是文档中关于这个闭包接收的参数的解释为零$key
(哪个“关键”是?),也没有明确说明闭包应该返回什么以确定排序顺序。(我假设它应该返回一个表示订单的整数,但我不知道如何使用多个NULL
值使其对我有用。)