2017-01-03 2 views
1

Ich habe eine Role-Tabelle erstellt, die eine viele zu viele Beziehung mit der User-Tabelle hat. Modelle und alles an Ort und Stelle plus ich kann alle Tabellen korrekt erstellen, um einen Standardbenutzer + 3 Rollen zu erstellen.Laravel User - Rolle viele zu viele Beziehung

Ich möchte den gerüsteten Register-Controller ändern, so dass ich eine Rolle zusammen mit den anderen Attributen (Name, Mail usw.) anhängen kann. Die Standardmethode create sieht etwa so aus:

Wie rufe ich Role model an? und wie übergebe ich es in der create-Funktion und letztlich zur Ansicht? Mein erster Gedanke war:

use App\Role; 

am Anfang der Datei und

$roles = Role::all(); 

vielleicht auf die Funktion erstellen? das ist wahrscheinlich falsch, aber ich kann nicht etwas anderes denken.

Plus wie rufe ich es nach auf der Ansicht? Die Rollentabelle hat 3 vordefinierte Rollen, wie oben erwähnt.

Antwort

2

Sie müssen zunächst Benutzer erstellen, dann müssen Sie Rollen anhängen und Benutzerinstanz zurückgeben. Dies sollte für Sie arbeiten:

protected function create(array $data) 
{ 
    $user = User::create([ 
     'name' => $data['name'], 
     'email' => $data['email'], 
     'password' => bcrypt($data['password']), 
    ]); 

    $roles = [2, 4]; 

    $user->roles()->attach($roles); 

    return $user; 
} 
+0

Vielen Dank für Ihre Antwort, aber: dass die Rollen sind von id 2 und 4 jeweils annimmt, (wenn ich es richtig machen), ich möchte das Register haben Ansicht geben Sie mir Drop-Down-Liste die Rollen in der Datenbank und fügen Sie dann die, die der Administrator zur Verfügung stellt, an. Den Blick nicht kümmern, aber wie ändere ich die Registeransicht, um die Rollen bereits in der DB zu zeigen und dann anhängen? – dioannou

+0

Wird es klug sein, meine eigene Registeransicht und einen zweiten Controller zu schreiben? nur für die Leichtigkeit vielleicht davon und nicht mit den Registern umgehenUser Merkmal Laravel – dioannou

+1

2 und 4 sind nur ein Beispiel, um Ihnen die Idee und das Format zu zeigen. Natürlich müssen Sie dies für Ihre Bedürfnisse ändern. Ich empfehle Ihnen, das eingebaute Authentifizierungssystem einschließlich Controller, Ansichten usw. zu bearbeiten und zu verwenden. –