2016-05-21 15 views
0

バージョン5.2のlaravelアプリケーションを作成しようとしています。 このため、デフォルトの「users」テーブルを使用して - ユーザーLaravel 5.2の複数のテーブルを使用した認証

  1. 管理者(サイト管理者)の3種類があるだろう場所。
  2. 所有者(ウェブサイトの作成者はフロントエンドから) テーブル「owners」を使用しています。
  3. お客様(訪問者または登録 訪問者) - これには「customers」という表を使用してください。

今私の問題がある:私は確信して、ログイン所有者が適切な認証を取得し、自分の(他のデフォルトのAuthルート)ルートにリダイレクトされますようにしたい

お客様と同じですが、主にウェブサイトのフロントエンドからログインするため、ルートがオーナーや管理者と異なることがあります。また、これらの顧客も認証を取得します。

どうすれば管理できますか?私は単一のテーブルで作業してきましたが、Laravelの新しい人として、私は複数のテーブルでどのように達成できるのか分かりません。

私はlaravel 5.2が複数のガードをサポートしていることを確認しましたが、どうやってこれを行うことができるかはわかりません。

これには特定のパッケージがありますが、このためにパッケージを中継したくありません。

ありがとうございました!

答えて

1

これには、ポリモルフィックの方法をお勧めします。

のは、3つの異なるテーブルがあるとしましょう - administratorsownerscustomers

今、それらのすべてのためには、列を持っています名前usersと共通のテーブルがあります: - は、profile_typeをを説明profile_id 。今

profile_idownerscustomersprofile_typeは、ユーザーが所属するモデル教えてくれる、テーブルadministratorsの外部キーになります。 usersテーブルでPROFILE_IDフィールドは1つの管理のために行を1つだけ持っている必要があるため

関係は

class User { 

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

} 

-- 

class Administrator { 

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

} 

、同様にここでは、morphOne代わりのmorphManyを使用しているだろう。

最後に、作成/保存を目的としています。そして、あなたがしている

  • $user = new User($inputs);

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

    行う

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

    2. のように管理者を作成します - :あなたがする必要があります完了!あなたはhttps://laravel.com/docs/5.1/eloquent-relationships#polymorphic-relations

      おかげで、

      からこのアプローチそれについての詳細を学ぶことができ

  • 関連する問題