В настоящее время используется стандартная аутентификация пользователей для Laravel (php artisan make:auth
), а затем объединяется с spatie/laravel-permission
.
У меня такой вопрос, у меня разные типы пользователей
- Студенты
- Стипендиаты-администраторы
- Поставщики стипендий
- Супер Администраторы
У меня есть роли «Пространство» для вышеперечисленного, и я могу назначать их различным пользователям. Сохраняя текущую таблицу пользователей / систему нетронутой, как бы я назначил «тип» пользователям.
Должен ли я пойти дальше и установить отношение типа 'morphOne' (, как показано здесь ) или я должен просто установить поле tinyint, которое определяет тип (0 = SuperAdmin, 1 = Student и т. Д. И т. Д.)?
// редактировать
Точно так же мне нужно хранить родительский объект, к которому он принадлежит. То есть администратор стипендии может иметь много пользователей, а поставщик стипендии может иметь много пользователей. Мне нужно хранить parent_id для пользователя.
Таким образом, это означает, что я должен пойти по маршруту отношений и добавить «полезную» таблицу и сохранить:
- userable_type = тип модели (стипендиат администратор / поставщик / студент)
- userable_id = родительский идентификатор
// редактировать 2
Так что теперь у меня есть следующие изменения:
//Bursary Administrators & Bursary Providers models have:
public function users() {
return $this->morphMany('App\Users', 'userable');
}
Создана миграция для изменения таблицы Users:
Schema::table('users', function (Blueprint $table) {
$table->integer('userable_id')->index('userable_id_index');
$table->string('userable_type');
});
И сделал необходимые дополнения модели пользователя:
public function userable()
{
return $this->morphTo();
}
Мой вопрос теперь трансформировался; следующим образом:
Я могу получить список пользователей Bursary Provider, выполнив:
$bp = App\BursaryProviders::find(1);
foreach ($bp->users as $user) {
//
}
Предположим, что пользователь Bursary Provider вошел в систему и создал нового пользователя; как получить идентификатор провайдера стипендии, вошедшего в систему в данный момент, чтобы у созданного пользователя был тот же провайдер стипендии?
т:
user_id = 123
& its bursary_provider_id = 1
user_id(123) creates user_id(124)
// How do I assign user_id(124) to have its bursary_provider_id=1 ?