订单与产品之间存在many to many
关系。数据透视表order_product
还有其他列:price
,quantity
。
我有自定义透视类:
class OrderProduct extends Pivot
{
protected $attributes = ['price', 'quantity'];
public function getPriceAttribute($value)
{
return number_format($value, 2);
}
public function setPriceAttribute($value)
{
$price = $value - ($value * 0.1);
$this->attributes['price'] = $price;
}
}
class Product extends Model
{
public function orders()
{
return $this->belongsToMany(Order::class, 'order_product')->using('App\Models\OrderProduct')->withPivot('price','quantity');
}
}
配件有效但增变器没有。
如何让mutator setPriceAttribute
与sync()
,attach()
合作?
$value
在setPriceAttribute
中是正确的,但修改不适用于DB?
答案 0 :(得分:2)
在相关模型中实现mutators和accessors。
class Product extends Model
{
public function getPriceAttribute($value)
{
return number_format($value, 2);
}
public function setPriceAttribute($value)
{
$price = $value - ($value * 0.1);
$this->attributes['price'] = $price;
}
public function orders()
{
return $this->belongsToMany(Order::class, 'order_product')->using('App\Models\OrderProduct')->withPivot('price','quantity');
}
}
希望这有帮助