Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 Re: Laravel 5.x » Подмена user » 03.08.2019 01:54:10

Да, именно так я и хочу сделать. Но загвоздка в том, что первоначально сайт был сделан так, что
именно от авторизации все плясало. Авторизовался - увидел свои цены и скидки.
А тут получается пользователю надо видеть скидки чужие.
Все это сделать можно, только придется очень многое переделывать, хотелось бы попроще,
Вот в релейшонсах можно как-то выборку делать как у меня пример написан. Он ошибку выдает, но может ему можно как-то подменить?

public function bayerSeller(){
       if ($this->isOptManager()&&Session()->has('bs_id')) {

       return BayerSeller::find(Session()->get('bs_id'));
       } else {
       return $this->hasOne('App\BayerSeller','user_id');}
   }

#2 Laravel 5.x » Подмена user » 02.08.2019 07:17:42

ZAlex
Ответов: 4

Всем здравствуйте, может подскажете идею..??
Создал сайт на Laravel, и все было завязано на пользователя, т.е. пользователь авторизуется и ему на сайте показываются его персональные скидки, цены и т.п.

в модел User есть вот такие отношения

public function Orders(){
       return $this->hasMany('App\Orders','user_id','id');
   }
   public function bayerSeller(){
           return $this->hasOne('App\BayerSeller','user_id');}
   }

в модели bayerSeller (оптовые клиенты) прописаны его скидки и т.п. - через нее уже связи с другими Моделями (например Discounts)

У оптовых клиентов есть менеджер, который за ними закреплен.

Сейчас встала задача сделать интерфейс для менеджера, чтобы он мог авторизоваться сам и смог выбрать клиента, к которому он приехал
и увидеть уже через созданный функционал его скидки и т.п. Т.е. системе как-то подменить user_id
Чтоб не перелопачивать весь движек, хотел сделать примерно так:
в модели user прописать вместо
public function bayerSeller(){
           return $this->hasOne('App\BayerSeller','user_id');}
   }
такую конструкцию:

public function bayerSeller(){
       if ($this->isOptManager()&&Session()->has('bs_id')) {

       return BayerSeller::find(Session()->get('bs_id'));
       } else {
       return $this->hasOne('App\BayerSeller','user_id');}
   }

но выходит ошибка Relationship method must return an object of type.
Может подскажете как можно реализовать такую конструкцию??
Всем заранее благодарен.

Подвал раздела