数据库字段本身就是驼峰命名字段,如何使用 Laravel 访问器
我的数据库字段是本身名字就是驼峰命名的字段,这个时候再使用访问器,是作用不到的。怎么办
这里是我的数据库一部分结构
`finishTime` varchar(13) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '订单完成时间(时间戳,毫秒)',
`orderEmt` tinyint(4) NOT NULL DEFAULT '0' COMMENT '下单设备(1:PC,2:无线)',
`orderId` varchar(16) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '订单ID',
`orderTime` varchar(13) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '下单时间(时间戳,毫秒)',
我写的模型的访问器,这样写的话,是没有用的
/**
* 获取下单时间
*/
public function getOrderTimeAttribute($value)
{
return $value/1000;
}
请各位大神指点一二
关于 LearnKu
高认可度评论:
貌似没有好办法, 只能重写
Illuminate\Database\Eloquent\Concerns\HasAttributes和Illuminate\Database\Eloquent\Model, 然后去继承自己写的 Model覆盖默认的 trait HasAttributes,就能实现了
很奇怪的是为啥数据字段命名要用驼峰命名法~
@犯二青年 这是数据库是旧的数据库,很早之前创建的,当时就是按照驼峰这种规范来创建的。
@houxin 可以试试这么写
似乎没办法。 最终都是他
数据库的字段好像是不分大小写的
@expectedSelf
只是数据库内部是不区分的,意思就是说,你不能同时创建大小写的两个字段名称。但是laravel读入数据的时候,还是有大小写区分的。主要是laravel访问器,驼峰对应的数据字段是下划线连接的。而我们想让驼峰对应的字段,也是驼峰的。
@犯二青年 换个名字就可以的, 比如像这样
然后取值的时候, 这么取就可以
下面的这种方式就不行,会报错,提示orderTime属性不存在。
下列取值
这样就会报错
@JaguarJack 是的
貌似没有好办法, 只能重写
Illuminate\Database\Eloquent\Concerns\HasAttributes和Illuminate\Database\Eloquent\Model, 然后去继承自己写的 Model覆盖默认的 trait HasAttributes,就能实现了
用as不行吗?
@may_J 用as是可以的。但是,每次查询,都要指定as才行的,而且那么多字段,要用select的话as的话,要指定的太多了
直接模型上面追加 :亲测简单有效