Roquie
@Roquie

Использование идентификатора юзера в моделях. Корректно ли?

Суть: В каждой модели, по 5 - 10 методов, которым как воздух необходим `$user_id`. Вызывая каждый в контроллере, надо всегда передавать идентификатор юзера - прям мучение какое-то, незнаю чтоли :).
Корректно ли задать свойство в базовой модели:
public function __construct()
{
     $this->user = \Auth::getUser();
}

...а затем использовать его по необходимости в остальных.

Или это потом может обернуться "плачевными последствиями"?
  • Вопрос задан
  • 2346 просмотров
Пригласить эксперта
Ответы на вопрос 3
rdifb0
@rdifb0
Программист, реалист
Как по мне так вполне корректно, другое дело что лучше на хардкодить, а передать параметром в конструктор.
Ответ написан
Плачевными последствиями может обернуться наличие (и их дальнейшее увеличение) 5-10 методов в модели. :) Используйте паттерн "репозиторий" или CQRS.

Если же всё нормально, то наличие определение userId в модели - норм.
Ответ написан
kumaxim
@kumaxim
Web-программист
Для начала 5-10 методов в модели... Чего у Вас там за модель такая?

Насчет поля id_user: если Ваша логика подразумевает, что с одним экземпляром модели будет работать только 1 юзер - объявляйте доп.поле и инициализируйте его в конструкторе.

Кстати, как один из вариантов, если Вам нужно быть уверенным, что этот самый id_user в процессе выполнения метода модели по какой-то причине не изменится и не потянет за собой все снежным комом, используйте его как параметр по умолчанию

public function Roquie($id_user = $this->_id_user) { .... }


В самом методе работайте не с $this->_id_user, который у Вас в контролере инициализируется, а с $id_user, являющийся параметром именно этого метода.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы