按数字排序,即使列类型是字符串,Laravel

Order by as Number, even if column type is string, Laravel

我有一个字符串列,但我只有双数(年龄),我想按以下方式排序,但明显的问题是我得到了错误的响应,因为是字符串。例如:(1、10、2、3、4、40 等...)。在我的代码中 $table = table、sort_by 的名称,在这种特殊情况下是 "age".

$query->orderBy("CAST(" . $table . $request->sort_by . "as NUMERIC)", 'ASC');

错误:

Undefined table: 7 ERROR: missing FROM-clause entry for table "CAST(people"↵LINE 1:

使用orderByRaw并将文本数字转换为整数:

$query->orderByRaw("age::int")

请注意,如果您一直需要将此文本数字列用作实际数字数据,这可能意味着设计问题,也许该列在您的 Postgres 中确实应该是整数 table。

因为我使用的是 Mongodb 和 elqouent ORM,所以这对我来说很好用

$query->orderBy("age::int")