2016-04-20 9 views
0

Ich bin ein absoluter Anfänger von Laravel-Framework. Ich habe ein Problem, das mit einer Pivot-Tabelle zu tun hat.Laravel 5.0: Pivot-Tabelle Ausgabe

Ich möchte eine Sammlung erhalten, die mit einer bestimmten ID angehängt ist.

MyController

/** 
* Show the form for creating a new resource. 
* 
* @return Response 
*/ 
public function create(){ 

    $loggedInUser = \Auth::user(); 
    $users = User::lists('first_name', 'id'); 
    $instructors = // Here comes a collection that has a role_id "2" on the pivot table. 
        //This is where I have no idea what to put 

    return view('courses.create', compact('loggedInUser', 'users', 'instructors')); 
} 

In diesem Fall würde Ich mag die Sammlung unten in den oben genannten Variablen „Lehrer“ setzen, weil die Sammlung unter bereits 2 bis ROLE_ID hat angebracht, die ein Lehrer ist.

id: "2", 
    first_name: "alex", 
    last_name: "powder", 
    email: "[email protected]", 
    ID: "819763758", 
    created_at: "2016-04-18 21:34:12", 
    updated_at: "2016-04-19 19:30:48" 

$ instructor-> Rollen

id: "2", 
    name: "instructor", 
    created_at: "2016-04-18 21:34:13", 
    updated_at: "2016-04-18 21:34:13", 
    pivot: <Illuminate\Database\Eloquent\Relations\Pivot #000000007a61781e00000001381bb0f0> { 
      user_id: "2", 
      role_id: "2", 
      created_at: "2016-04-18 22:54:06", 
      updated_at: "2016-04-18 22:54:06" 

Role.php

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

User.php

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

Englisch ist nicht meine Muttersprache. Wenn dieser Beitrag nicht sinnvoll ist, hinterlassen Sie bitte Ihre Kommentare. Jeder Rat würde geschätzt werden! Danke im Voraus!

+0

Sie Benutzern, die 'role_id' hat '2' mit dort Rollen richtig? –

+0

ja! Benutzer, deren role_id 2 in der Pivot-Tabelle ist – ILoveBaymax

Antwort

1

Sie haben whereHas zu verwenden, wenn Sie für die Benutzer suchen, die role_id2

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

hat, wird es den Benutzern bringen, die roles diese Abfrage 2

+0

Wow! Vielen Dank ARIF! Du bist toll!! – ILoveBaymax

+0

Auch die Schließung auf der with-Anweisung, denn sonst erhalten Sie alle Rollen, die den ausgewählten Benutzern zugeordnet sind. – blablabla

1

Versuchen hat.

$instructors = User::whereHas('roles', function($query) { 
    $query->where('roles.id', '=', 2); 
})->get(); 
1

Für Anwender, die (dynamisch) ist ROLE_ID hat:

$role_id = 2; 

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