Laravel, разные цены для разных пользователей

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

так вот как это должно быть =>

if ($user->type = 'special')

Мне нужно получить $item->special_price, а не $item->price из базы данных.

Я показываю $item->price во многих местах.

Мой вопрос: в зависимости от логина пользователя, могу ли я перезаписать все места, в которых я использую $item->price, на $item->special_price?

цена взята из базы данных?

Anar Bayramov 07.06.2018 10:29

да, это связано с БД

menaka 07.06.2018 10:30

вы можете создать метод specialPrice и вернуть его как $ this-> price * something

Anar Bayramov 07.06.2018 10:31

слишком много мест меняется, я пытаюсь сделать это внутри модели, перезаписать ценовые вызовы с помощью special_price ... что-то в этом роде

menaka 07.06.2018 10:56
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
4
428
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Laravel позволяет создавать настраиваемые атрибуты для ваших моделей.

class Item extends Model {
    public function getCurrentPriceAttribute(){
        return auth()->user()->type == 'special'
          ? $this->special_price
          : $this->price
    }
}

Здесь мы используем помощник auth(), чтобы получить текущего пользователя. Мы проверяем тип пользователя и, если он особенный, получаем special_price, если пользователь не особенный, возвращаем «нормальный» price.

Вы можете использовать $item->currentPrice, чтобы узнать цену для текущего пользователя.

Хорошо, я могу попробовать это. Я думал использовать что-то вроде этого, но есть много мест, которые мне нужно изменить, чтобы использовать это, потому что в настоящее время я просто использую $ this-> price во всех местах. Я пытался найти способ ввести $ this-> special_price в $ this-> price в модели, чтобы мне не пришлось менять код во многих местах.

menaka 07.06.2018 10:38
$key = auth()->user()->type=='normal'||(other  user types where u need $item->price)?'price':auth()->user()->type.'_price';

$price = $item[$key];

Пожалуйста, предоставьте контекст, а не только правильный код. Что не так с кодом, предоставленным автором вопроса? В чем ваше улучшение?

Andrew_Lvov 07.06.2018 22:18

Другие вопросы по теме