Laravel 5:是否有一种非区分大小写的方式来按属性对集合进行排序?

时间:2017-03-21 10:57:29

标签: php laravel sorting eloquent

我正在努力使用sortBy()方法对Eloquent集合进行排序。问题是排序区分大小写,它首先检索大写结果,然后检索小写结果,但我想要实现的是对每个项目进行排序,无论它是大写还是小写。< / p>

2 个答案:

答案 0 :(得分:15)

sortBy()第二个参数允许您设置有关如何处理排序的一些标志。

标志与PHP sort()本机函数完全相同。

  
      
  • SORT_REGULAR - 正常比较项目(不要更改类型)
  •   
  • SORT_NUMERIC - 以数字方式比较商品
  •   
  • SORT_STRING - 将项目比较为字符串
  •   
  • SORT_LOCALE_STRING - 根据当前区域设置将项目比较为字符串。它使用可以使用的区域设置   的setlocale()
  •   
  • SORT_NATURAL - 使用“自然排序”比较项目作为字符串,如natsort()
  •   
  • SORT_FLAG_CASE - 可以与SORT_STRING或SORT_NATURAL组合(按位或)以不区分大小写的方式对字符串进行排序
  •   
     

来源:php.net

您可以尝试使用$collection->sortBy('key', SORT_NATURAL|SORT_FLAG_CASE)

答案 1 :(得分:0)

如果您有一个简单的值列表,并且希望忽略大小写对它们进行排序,则还可以使用sort()代替sortBy()并使用如下的回调函数:

$collection->sort(function($a, $b){
    return strtolower($a) > strtolower($b);
});