如何在自定义透视类laravel5中添加mutators

时间:2018-02-27 11:17:47

标签: php laravel

订单与产品之间存在many to many关系。数据透视表order_product还有其他列:pricequantity。 我有自定义透视类:

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 setPriceAttributesync()attach()合作?

{p> $valuesetPriceAttribute中是正确的,但修改不适用于DB?

1 个答案:

答案 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');
   }
}

希望这有帮助