DJZT
@DJZT
Laravel - code for you

Как правильно организовать наследование моделей в laravel?

Добрый день. Как правильно организовать наследование моделей в таком случае? Имеется модель User. Необходимо что-бы было 2 модели, Student и Teacher наследованные от User. Как мне обращаться потом к текущему пользователю через фасад Auth? Если же я буду вызывать Auth::user() то получу базовую модель?
Или может в базовой модели сделать поле boolean isTeacher, и из полученной модели Auth::user() брать id и искать Teacher::find(Auth::user()->id)?
  • Вопрос задан
  • 736 просмотров
Решения вопроса 1
Denormalization
@Denormalization
Вариантов несколько:
- Реализовать свой Auth класс, который будет возвращать правильную модель через MyAuth::user() (но могут быть подводные камни)
- Реализовать свой UserRepository в котором будет методы auth/login/findByID/etc, и который будет возвращать правильную модель, и работать только через этот класс.
- Сделать 2 разные таблицы, и работать с ними отдельно. При авторизации пробовать авторизировать в каждой из таблиц.
- Сделать 1 таблицу для логина, и 2 дополнительных для остальной информации. Тогда можно логинить по 1 таблице, а затем брать нужную таблицу из relation.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
zogxray
@zogxray
https://www.tiktok.com/@zogxray
Вам нужны роли!
$role = Role::findOrFail($studentRoleId);
$users = $role->users()->paginate(9);
или так
$users = User::with('roles')
->whereHas('roles', function($q){
$q->where('role', '=', 'student');
})->get();
и права поделить
if(Auth::user()->hasRole('student')) {}
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы