Laravel Eloquent 按字母数字值排序

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

我正在使用 laravel 6.x,我有这样的行

Plot 4
Plot 5
Plot 2
Plot 4B
Plot 3
Shop 2
Shop 1

我想要这样的结果

Plot 2
Plot 3
Plot 4
Plot 4B
Plot 5
Shop 1
Shop 2

谢谢

php laravel web-deployment laravel-6 laravel-6.2
2个回答
1
投票

如果您使用 Laravel,您应该查看他们的集合文档及其排序方法。

从创建集合开始: https://laravel.com/docs/6.x/collections#creating-collections

然后看排序: https://laravel.com/docs/6.x/collections#method-sort

那应该可以让你到达那里。如果您发布到目前为止的尝试详细信息,我们可以帮助您使其发挥作用。

如果您使用雄辩的模型从数据库中获取数据,那么它已经作为一个集合出现,那么您只需按相关键进行排序即可,例如。

Model::all()->sortBy('column');

0
投票
  1. 您可以使用
    orderByRaw
    方法在数据库级别执行排序:
    Questionnaire::orderByRaw('CAST(number AS SIGNED) ASC')->get();
    
  2. 查询结果返回后,可以使用集合类的
    sortBy
    方法进行排序。即(在内存中)-如果您有非常大的数据,我不会推荐这样做:
    Questionnaire::all()->sortBy(fn($item) => (int) $item['number']);
    
© www.soinside.com 2019 - 2024. All rights reserved.