Рассчитать цену в модели, каждый раз обращаясь к модели в laravel без сохранения в базе данных - PullRequest
0 голосов
/ 20 марта 2020

Мне нужно рассчитывать цену после скидки каждый раз, когда я получаю доступ к своей модели продукта. Есть поля для хранения цены и скидки, но нет окончательной цены после скидки. Как я могу сделать это в модели, чтобы при каждом обращении к записям из модели рассчитывалась цена со скидкой?

1 Ответ

2 голосов
/ 20 марта 2020

Вы можете добавить мутаторы в вашу модель продукта, она станет виртуальным атрибутом, что-то вроде этого:

    public function getPriceAttribute($value)
    {
        return $value - $this->discount * $value; // Here just the example, add your logic to calculate the price.
    }

Таким образом, вы можете получить доступ к цене после скидки для каждого продукта.

Product::first()->price

Если вы не хотите, чтобы цена со скидкой перезаписывала вашу первоначальную цену, вы можете изменить имя другого атрибута, например discounted_price:

    protected $appends = ['discounted_price'];

    public function getDiscountedPriceAttribute()
    {
        return $this->price - $this->discount * $this->price; // Here just the example, add your logic to calculate the price.
    }

Доступ к цене со скидкой:

Product::first()->discounted_price
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...