问题
mysql中的存的是Decimal类型,laravel取出来后却是string(换成float会解析为浮点型,但是不推荐,因为float本身就存在精度问题),如果每个查询数据库的地方都加个$xxx = float($xxx)
明显反人类
解决:Eloquent指定$casts属性
比如有个字段叫money,数据库存的是decimal(10,2),想在获取的时候解析为float类型,可以这样指定
<?php
namespace AppModels;
use IlluminateDatabaseEloquentModel;
class User extends Model
{
protected $casts = [
'money' => 'float',
];
}
支持转换的类型:
* integer
* real
* float
* double
* string
* boolean
* object
* array
* collection
* date
* datetime
* timestamp
具体请查看 官方文档