2016-05-21 5 views
0

Я пытаюсь создать приложение laravel с версией 5.2. Там, где будет 3 типа пользователейАутентификация с использованием нескольких таблиц в Laravel 5.2

  1. Администратор (менеджер сайта) - использование по умолчанию «users» стол для этого.
  2. Владельцы (создатель веб-сайта с сайта) - используя таблицу «owners» для этого.
  3. Заказчик (Посетители или зарегистрированные посетителей) - используя таблицу «customers» для этого.

Теперь моя проблема:

я хочу, чтобы убедиться, что владельцы входа получат надлежащую идентификацию и перенаправить их собственный (другое то по умолчанию Auth маршрут) маршруту.

И то же самое с клиентом, и они будут главным образом подключаться через интерфейс сайта, поэтому их маршрут будет отличаться от владельцев и администратора. И этот клиент также получит аутентификацию.

Как я могу управлять этим? Я работал с одной таблицей, но, будучи новым человеком в Laravel, я не уверен, как я могу достичь с помощью нескольких таблиц.

Я проверил laravel 5.2 начал поддерживать несколько gaurds сейчас, но не уверен, как я могу это сделать.

Для этого есть определенные пакеты, но я не хочу ретранслировать на пакет для этого.

Спасибо!

ответ

1

Я предлагаю вам следовать за Полиморфный подход.

Допустим, есть три различных таблиц - administrators, owners, customers

Теперь для всех из них есть общая таблица с именем users которые будут иметь столбцы: - profile_id, profile_type ,

Теперь profile_id станет внешним ключом для таблиц administrators, owners и customers и profile_type покажет, какую модели принадлежит пользователю.

связь будет, как,

class User { 

    public function profile() { 
    return $this->morphTo(); 
    } 

} 

-- 

class Administrator { 

    public function user() { 
    return $this->morphOne('App\User', 'profile'); 
    } 

} 

Здесь мы используем morphOne вместо morphMany потому что profile_id поле в users таблицы должны иметь только одну строку для одного администратора.

И наконец, с целью создания/хранения.Вы должны будете: -

  1. Создать админа как

    $admin = Administrator::create($inputs);

  2. Затем сделайте

    $user = new User($inputs);

    $admin->user()->save($user);

  3. Вы сделанный!

Вы можете узнать больше об этом этот подход от https://laravel.com/docs/5.1/eloquent-relationships#polymorphic-relations

Спасибо,