我遇到了一个小(我希望)问题,希望你们中的一个人能够帮助我:)
在我的数据库中得到以下值:56, 63, 75, 80, 90, 100, 132
我得到了这个代码:
MotorSize::orderBy('framesize', 'asc')
->get();
然后在 Blade 中:
@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');
也许是因为它不是整数?有什么解决办法吗?
最佳答案
您可以使用原始查询来获得所需的结果。
$query = "CAST(framesize AS INTEGER) ASC";
DB::table('motor_size')->orderByRaw($query)->get();
但是,更好的方法应该是修改列的数据类型。这样做将:
为此,请创建一个新的迁移:
php artisan make:migration AlterFrameSizeInMotorSizeTable
添加以下作为 up 函数定义:
public function up()
{
Schema::table('motor_size', function (Blueprint $table) {
$table->integer('framesize')->change();
});
}
然后使用以下命令运行迁移:
php artisan migrate
关于php - Laravel Eloquent 顺序按数字数百先而不是最后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59029298/