我在Laravel选择查询中遇到小拼图问题。它自动更改数据类型。
当我使用
时$data = Model::select('user_id AS id')->get();
数据为[{"id":3},{"id":4}] // not actual value
但当我使用时(仅将别名 ID 更改为 ID )
$data = Model::select('user_id AS ID')->get();
数据为[{"ID":"03"},{"ID":"04"}] // actual value
问题是什么
答案 0 :(得分:3)
这是因为Laravel自动将id
字段转换为整数,因为它将是模型的主键。
主键
Eloquent还会假设每个表都有一个名为id的主键列。您可以定义受保护的$ primaryKey属性来覆盖此约定。
此外,Eloquent假定主键是递增的整数值,这意味着默认情况下主键将自动转换为int。如果要使用非递增或非数字主键,则必须将模型上的public $ incrementing属性设置为false。如果主键不是整数,则应将模型上的protected $ keyType属性设置为string。
如果您希望将属性ID
设置为整数,则可以使用Eloquent的属性强制转换: