laravel collection orderBy方法,具有字符串值列类型

时间:2020-03-13 19:00:54

标签: php laravel collections

我使用波纹管代码对某些元数据进行排序,但列值的类型为字符串,因此orderBy方法将其像字符串一样进行排序(value ='22')

代码:

$metas = Meta::where(['cat' => 'view', 'meta_name' => 'daily'])->orderBy('meta_value', 'desc')->get();

那么我如何根据数值对它们进行排序? 如果laravel方法没有任何解决方案,请参考php&mysql

谢谢

2 个答案:

答案 0 :(得分:1)

您可以使用sortByDesc。尝试以下代码:

    $metas = Meta::where(['cat' => 'view', 'meta_name' => 'daily'])->get()
             ->sortByDesc(function($value){
                 return (int) $value->meta_value;
             });

答案 1 :(得分:0)

Meta::where()->get()返回一个laravel collection。如果需要自定义排序,可以使用自定义排序函数,该函数内部使用php的uasort()

Mega::where([..])->get()->sort(function($a, $b) {
    return (int)$a->meta_value <=> (int)$b->meta_value;
})