由于历史缘由,在Laravel 5.3版本 使用 Eloquent 的 increment
出现了精度丢失,this
重写incrementOrDecrementAttributeValue
方法,使用 bcadd
进行计算,保留2位小数。code
protected function incrementOrDecrementAttributeValue($column, $amount, $method) { $this->{$column} = bcadd($this->{$column}, ($method == 'increment' ? $amount : $amount * -1), 2); $this->syncOriginalAttribute($column); }