我使用波纹管代码对某些元数据进行排序,但列值的类型为字符串,因此orderBy方法将其像字符串一样进行排序(value ='22')
代码:
$metas = Meta::where(['cat' => 'view', 'meta_name' => 'daily'])->orderBy('meta_value', 'desc')->get();
那么我如何根据数值对它们进行排序? 如果laravel方法没有任何解决方案,请参考php&mysql
谢谢
答案 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;
})