2016-10-27 19 views
0

さて、簡単に始めるには、行(権限)を持つランクと呼ばれるテーブルがあり、それらはintで、1または0にすることができます。 ユーザーテーブルにはランクIDの行があります。Laravel追加の認証情報

例ユーザテーブル: 名:シンテックスメール:*@**.nlランク:2

例は、テーブルをランク: ID:2 permToEdit:1

私はランクIDを表示することができます。 Auth :: user() - > rankしかし、これは私を助けません。 私はこのようなランクの行にアクセスしたい:Auth :: user() - > rank-> permToEdit。次のクエリを実行すると可能です:

Auth::user()->rank = DB::table('ranks')->select('color')->where([['id', '=', Auth::user()->rank],])->first(); 

これは可能ですが、すべてのコントローラとすべてのビューからアクセスする必要があります。だから私はどこでそれをacceableにするためにこの行を置くのですか?あなたは自分のUserモデル

public function rank() 
{ 
    return $this->hasOne(Rank::class); 
} 

しかし、私はZizaco/entrustヘルパーをお勧めしますユーザーのロール/権限のために、このメソッドを追加することができます関係

+1

を読む[関係](約 – tam5

+0

ユーザーは1つ以上の 'ランク'を持つことができますか? –

答えて

0

+0

これを有効にするには、列ランクは 'rank_id'でなければなりません。また、列名を関係メソッドにパラメータとして追加する必要があります。 – tam5

+0

@tam私の例は、 'users'テーブルに' rank_id'フィールドがある場合に動作します。 – aleksejjj

+0

それは私がちょうど言ったことです。 – tam5

0

あなたが正しく質問しているかどうかわかりません。しかし、ピボットテーブルが必要だと私には思われます。

あなたは、テーブルを持っている:「ユーザー」

および表:「ランク」

だから、(ランクが最初に来るようLaravelは、ここにアルファベット順にあなたの作品ピボットテーブルrank_userを作成した場合これを「ユーザー」の「ランク」モデルで変更できます)。

だから最初you'lは、ピボットテーブルを作成する必要があります。

Schema::create(‘rank_user', function(Blueprint $table) { 
      $table->increments('id'); 
      $table->integer('user_id'); 
      $table->integer('rank_id'); 
      $table->boolean('permToEdit') // withs converts to a ‘tiny int’ in the database 
}); 

それではあなたのUserモデルで作成する必要があります:

public function ranks() 
    { 
     return $this->belongsToMany(‘App\Rank’)->withPivot(‘permToEdit’); 
    } 

そして、あなたのランクモデルでは:

public function users() 
    { 
     return $this->belongsToMany(App\User') 
      ->withPivot('permToEdit '); 
    } 

ユーザーモデルでは、次の関数を使用できます

public function getPermToEdit() 
{ 
    Return $this->ranks()->wherePivot(‘permToEdit’, true)->first(); 
} 

それとも、あなたは可能性が特定のユーザーID PASする必要がある場合:このすべては、あなたに新しいものである場合

public function getUserPermToEdit($user_id) 
{ 
    Return $this->ranks()->wherePivot('user_id', $user_id)->wherePivot(‘permToEdit’, true)->first(); 
} 

することを確認します https://laravel.com/docs/5.3/eloquent-relationships または https://www.youtube.com/watch?v=xIBST5vVq84&list=PLfdtiltiRHWEb-tzSN99Zy-39Y1tKl5DB

+0

ピボットテーブルはここでは必要ありません。しかし、OPが彼のアプローチを変えたいと思うなら、いい提案かもしれない – tam5

関連する問題