【发布时间】:2020-03-20 14:17:08
【问题描述】:
我遇到了一个小问题(我希望),希望你们中的一个人能够帮助我:)
在我的数据库中获得以下值:56、63、75、80、90、100、132
我得到了这个代码:
MotorSize::orderBy('framesize', 'asc')
->get();
然后在刀片中:
@foreach($motor_sizes as $motor_size)
{{ $motor_size->name }}
@endforeach
我希望输出为:56、63、75、80、90、100、132
但输出是:100、132、56、63、75、80、90
为什么会这样?如何解决?我猜它与值的起始整数有关。
与值相关的数据库表:
$table->string('framesize');
也许是因为它不是整数?有什么解决办法吗?
【问题讨论】:
-
因为结果是按字母顺序排列的,而不是按数字排列的。您订购的字段类型为
string -
是的,orderByRaw("CAST(framesize as UNSIGNED) ASC") 成功了 :)
-
为什么存储为字符串呢?您正在进行查询以进行额外的处理。实际答案是只更改 DB 列的数据类型。
-
@vivek_23 这也是一个好建议。 Kenneth,您应该拥有它,这样您就不会不必要地使与该模型有关的其他雄辩的查询复杂化。