2016-11-25 9 views
0

私はビカンの役割のプラグインを持っており、ピボットテーブルにアクセスする必要があります。ユーザーとロールの間に、あなたの関係が多対であればこれは私のコントローラのコードでピボットテーブルの列にアクセスする方法

$users = User::where('role_id','=',2)->get(); 

移行の役割

Schema::create('roles', function (Blueprint $table) { 
     $table->increments('id')->unsigned(); 
     $table->string('name'); 
     $table->string('slug')->unique(); 
     $table->string('description')->nullable(); 
     $table->integer('level')->default(1); 
     $table->timestamps(); 
    }); 

移行ユーザー

Schema::create('users', function (Blueprint $table) { 
     $table->increments('id'); 
     $table->string('name')->unique(); 
     $table->string('email')->unique(); 
     $table->rememberToken(); 
     $table->timestamps(); 
    }); 

ピボット移行

Schema::create('role_user', function (Blueprint $table) { 
     $table->increments('id')->unsigned(); 
     $table->integer('role_id')->unsigned()->index(); 
     $table->foreign('role_id')->references('id')->on('roles')->onDelete('cascade'); 
     $table->integer('user_id')->unsigned()->index(); 
     $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade'); 
     $table->timestamps(); 
    }); 

答えて

1

です多対多Userに間違ってクエリしているようです。右のクエリのようになります。

$users = User::whereHas('roles', function($q) { 
        $q->where('role_id', 2); 
       }) 
       ->get(); 

その後、あなたはなど、ユーザーの役割を取得することができます

foreach($users as $user) { 
    $user->roles; // returns collection of roles 
} 
+0

一つの質問を、whereHasは、ピボットテーブルを見て? – OunknownO

+0

「whereHas」は照会関係に使用されます。ドキュメント[here](https://laravel.com/docs/5.3/eloquent-relationships#querying-relationship-existence)を読むことができます。 –

関連する問題