我有列id_a(varchar , primary key)
,其值为1 - 10.我想将该id_a列强制转换为整数,因此如果我执行查询\App\Model\Main::max('id_a');
,则返回值10,就像我{{1}一样}}。我将此代码添加到我的模型中但没有工作(\ App \ Model \ Main :: max('id_a')仍然返回值9):
SELECT MAX(CAST(id_a as integer)) FROM mains
这是我模型的完整代码:
protected $casts = [
'id_a' => 'integer',
];
答案 0 :(得分:2)
您的$casts
设置根本不会影响App\Model\Main::max('id_a')
之类的通话 - 它会直接进入数据库。与在SQL中执行SELECT MAX(id_a) FROM mains
相同。
如果要将id_a
列用作整数,则它应该是数据库中的整数列。当前行为 - 将9
排序为大于10
- 意味着它是一个字符串列。