2016-12-11 1 views
-1

私は2つのテーブルとusersの間に多対多の関係を持つプロジェクトに取り組んでいます。私はまた、他の2つのテーブル間の関係に関する情報を保持するピボットテーブルrole_userを持っています。Laravel eloquent many to many relationship関係が存在するかどうかを確認する

role_useruser_idの2つのフィールドの2つのフィールド、すなわちidがあります。

今私はusersテーブルから得たユーザオブジェクトと、rolesテーブルから得た別のロールオブジェクトを持っています。私は特定の役割が特定のユーザーに属しているかどうかを判断したい。

これは、ピボットテーブルのモデルを作成してモデルを使用することによって実行できることがわかっています。関係が存在するかどうかを照会して決定することができます。role_user しかし、私はこの方法がストレスになり、雄弁がこれを決定する簡単な方法を提供するのではないかと疑問に思います。 何か助けていただきありがとうございますか?

答えて

0

role_userモデルは必要ありません。ロールモデルと、ユーザーが所有するテーブルに関連するユーザーモデルが既に存在する可能性があります。あなたが定義する必要があり、関数のユーザー

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

- 機能の役割

public function roles() 
{ 
    return $this->belongsToMany('App\Role'); 
} 

Role.php - はUser.php

Role.phpの多くの関係に多くのとUser.phpを指定しますテーブルの列や表の命名規則に従わない場合は、ピボットテーブルなどの他のパラメータを使用します。あなたがルールに従っているように見えるので、私はそれを説明しません。しかし、あなたはいつでもあなたが特定の役割に属しているかどうかを簡単に確認することができます laravel documentation's eloquent many-to-may section

を参照することができます。 次の例を検討してください

//select a user 
    $user = App\User::find(1); 
    //select a role 
    $role = App\Role::find(1); 
    //get $user's roles. This ill return an array of role objects that are belong to $user 
    $userRoles = $user->roles; 
    //check whether $role is in that array 
    if(in_array($role, $userRoles)){ 
    //do something 
    } 
+0

回答がありましたか? – developer

関連する問題