Laravel Красноречивый пользовательский контекст - PullRequest
0 голосов
/ 17 октября 2019

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

У меня есть customer, product, price, cart и cart_item и admin. Цена имеет глобальную область, которая ограничивает результаты гостем и конкретным идентификатором пользователя. Проблема возникает, когда администратор хочет просмотреть корзину какого-либо клиента. Потому что тогда глобальная сфера бесполезна.

class Product extends Model {
    public function prices() {
        return $this->hasMany(Price::class);
    }

    public function getPriceAttribute() {
        // do some business logic
        return $price;
    }
}

class Price extends Model {
     protected static function boot() {
        parent::boot();
        self::addGlobalScope('customer', function ($query) {
           $query->whereNull('customer_id'); // public prices
           if (Auth::user()) {
              $query->orWhere('customer_id', '=', Auth::user()->id);
           }
        }
     }
}

class CartItem extends Model {
    public function product() {
        return $this->belongsTo(Product::class);
    }
    // cart Item does not store price. Only amount and product id
    public function getSumAttribute() {
        return $this->quantity * $this->product->price; // float is not production code, just to illustrate
    }
}

Я ищу правильный способ сделать это. Контроллер имеет что-то вроде этого

$cart = Cart::with('items.product.prices')->find($id);

Могу ли я сделать что-то вроде? пользователя. И пусть модель Прайса использует эту переменную вместо Auth :: user ().

Я также видел пакеты олицетворения для Laravel.

Но оба эти подхода бесполезны, если я выбираю Cartsот нескольких пользователей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...