Laravel по-русски

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

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

#1 24.02.2016 15:16:15

Наследование модели User. Как сделать правильно?

В системе есть несколько ролей: user, manager, zavsklad.

У некоторых ролей есть дополнительные записи в БД. Например у zavsklad есть связанные склады, а у manager есть связанные заказы.

В систему добавляются модели  Zavsklad и Manager, которые связанны теперь с моделью User по полю user_id.

Теперь, чтобы найти аутентифицированного Завсклада я делаю - $zavsklad = Zavsklad::whereUser_id(Auth::user()->id)->firstOrFail();

Всё работает.

Вопрос есть ли в Ларавел возможность наследования модели от модели?

Ведь по сути завсклад это потомок пользователя.

Не в сети

#2 24.02.2016 15:28:39

duster
Откуда: Мельбурн
Сообщений: 148

Re: Наследование модели User. Как сделать правильно?

Вам наверное лучше роли, а не модели использовать для этого? Есть готовый package: https://github.com/Zizaco/entrust

Если пользователь реально один и тот же, просто права разные — было бы неправильным с точки зрения архитектуры плодить Active Record модели (Eloquent). Раз юзер один — модель должна быть одна, возможности у нее разные.

Почему вы не хотите просто в модель User добавить методы вроде isZavsklad()? (это если не использовать настоящие роли)

И вообще, судя по описанию вам тут подходит decorator pattern? Реализовать zavsklad/manager как два отдельных не-Eloquent класса, а потом в них wrap’ить оригинальный класс User.

Не в сети

#3 24.02.2016 16:09:57

Re: Наследование модели User. Как сделать правильно?

Роли я использую через pivot table.

А вот decorator pattern буду копать, спасибо.

Не в сети

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