laraval 访问器可以临时关闭或者获取原始数据吗?

davischin
  • 66

laravel访问器可以格式化一些字段值,很方便。比如支付状态,数据库里面保存1,通过访问器可以很容易转换成 已支付 在模板显示。


现在问题是,有时候我们需要判断是否已支付,比如如下情景

if($payStatus == 1){
    //do something
}

如果定义了访问器,此时的 $payStatus 为 '已支付',导致上面的判断不成立。
laravel有没有可以临时获取原始数据的办法或者临时关闭访问器的办法?文档总好像没有提到一点。

回复
阅读 4.9k
3 个回答

你难道把原来的替换掉了?

建议你这样做

clipboard.png
在model层追加字段

clipboard.png
然后用访问器赋值给追加字段

对于数据库里的原始字段个人建议最好不要覆盖,我的项目订单的金额数据库里存的是分(int整形),用访问器改成了两位小数,元(decimal,2),就是直接覆盖原始字段的做法

上个月突然尴尬的发现要使用‘分’这个原始数据,总不能再转化回来把?然后开始苦B的往回改,现在回想起来头都要炸了,那么多地方都在用model层(我们的model层独立出来的,其他项目作为依赖都在用),真不知道怎么改回来的

中途改漏了一个地方,商户给买家退款,30退成了3000 。。。啊西巴~~~

如果解决了你的问题,望采纳~

赞同楼上, 数据库中的数据最好不要改.

你需要什么样的格式, 直接格式化就好了.

你可以使用查询构建器 直接查询原始值

DB::table('order')->where('id',$request->get('id'))->value('payStatus');
宣传栏