【问题标题】:Laravel - Order by as Number (int), even if column type is stringLaravel - 按数字(int)排序,即使列类型是字符串
【发布时间】:2020-11-30 22:12:57
【问题描述】:

这里是:-

$query = Section::orderBy("section", "desc")->get();

这里的部分是一个字符串类型的列,但它里面有数字,我想按这些数字排序 感谢您的回复

【问题讨论】:

  • 为什么有一列存储数字并将其变成字符串?只需创建一个迁移,将列更新为整数,然后您可以更轻松地按数字排序。
  • 它应该在 mysql 或 pg 中工作。你得到什么结果?

标签: php laravel eloquent query-builder


【解决方案1】:
$query->orderByRaw("section::int", "desc")->get();

【讨论】:

  • 虽然此代码可能会回答问题,但如果您解释 为什么如何,它将对 OP 和未来的读者有更多帮助
【解决方案2】:

您可以将orderByRawmysql convert 一起使用

$query = Section::orderByRaw('CONVERT(section, SIGNED) desc')->get();

【讨论】:

    【解决方案3】:

    首先你应该在设计模式时使用正确的数据类型。

    对于您现有的架构,您可以调整您的 order by 子句以在运行时使用 orderByRaw 方法类型转换您的值

    ->orderByRaw('section * 1 desc') 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-01-29
      • 1970-01-01
      • 1970-01-01
      • 2017-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多