laravel collection orderBy方法为字符串值列类型

问题描述 投票:0回答:2

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

代码:

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

所以我如何根据数值对它们进行排序?如果在laravel方法中没有任何解决方案,请指南是php&mysql

谢谢

php laravel collections
2个回答
0
投票

尝试以下代码:

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

0
投票

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

Mega::where([..])->get()->sort(function($a, $b) {
    return (int)$a->meta_value <=> (int)$b->meta_value;
})
© www.soinside.com 2019 - 2024. All rights reserved.