http://laravelacademy.org/post/7014.html
我系统中存储单位是分,用户界面展示的是元。 应用场景:商品、用户余额
现在: 添加新数据( insert )、获取数据( select )没毛病,能自动的 再 insert 的时候 乘 100,select 出来的时候 除 100
但是问题来了,这个东西竟然不支持 在更新数据的时候( update )自动 乘 100
使用 自增 increment 和 自减 decrement 不会自动 乘 100
坛子里有小伙伴们碰到吗
举例:
/**
* 商品
* Class Goods
*
* @package App\Http\Models
*/
class Goods extends Model
{
protected $table = 'goods';
protected $primaryKey = 'id';
function getPriceAttribute($value)
{
return $value / 100;
}
function setPriceAttribute($value)
{
$this->attributes['price'] = $value * 100;
}
}
$amount = 10;
Goods::query()->increment('price', $amount);
希望结果:goods 的 price 加 1000
实际结果:goods 的 price 只加了 10
1
ericls 2018-04-25 10:02:36 +08:00 via iPhone
increment 和 setPriceAttribute 都不是一个东西……
搞不好 increment 还是直接走的数据库 做的 atomic |
2
justfindu 2018-04-25 10:07:24 +08:00
不好判断啊, 他只是在更新时候把属性值 * 100, 但是你这个增减的话, 它是把你的变更数值增减 * 100 , 还是把你原来数据 * 100 增减, 还是把你计算完的数据增减 * 100 , 完全不好判断.
|
3
vex2 2018-04-25 10:45:22 +08:00
vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php
|
4
GooMS 2018-04-25 12:55:00 +08:00 via Android
看看代码如何实现就几道了
|
5
2ME 2018-04-25 14:06:56 +08:00 1
increment 走的是 QueryBuilder 并不是 ORM 操作 所以并不会经过 ORM 的修改器
|