2015-02-02 7 views
12

ich drei Tabellen haben,Laravel Hinzufügen von Datentabelle zu schwenken, während neue Rekord Einfügen

roles(id, name); 
users(id, email, password); 
user_role(id, user_id, role_id); 

In diesem Szenario habe ich Benutzer-Tabelle mit vielen vielen Bezug auf Rollen Tabelle zugeordnet ist.

Ich habe zwei eloquent Modell als

Role 
+users(){ 
    belongsToMany('User') 
} 

User 
+roles(){ 
    belongsToMany('Role') 
} 

Nun, die Frage ist, wenn ich zusammen mit ids von Rollen einen neuen Benutzer hinzufügen mag, dass ich zu Benutzern zuweisen möchte. Wie kann ich Werte in Pivot-Tabellen mit Laravel-Best Practices einfügen?

Mein vorhandener Code ist: -

$roles = Input::get('roles'); // arrays of role ids 

$user = new User(); 
$user->username = Input::get('username'); 
$user->password = Hash::make(Input::get('password')); 
$user->save(); 

Was als nächstes zu tun ???

+0

Genau wie hier: http://laravel.com/docs/4.2/eloquent#inserting-related-models –

Antwort

12

Es ist wirklich alles described in the documentation. Bitte lesen Sie den entsprechenden Abschnitt in der Dokumentation, bevor Sie eine Frage zu SO stellen.

Sowieso ist hier, wie Sie es tun:

$user = new User(); 
$user->username = Input::get('username'); 
$user->password = Hash::make(Input::get('password')); 
$user->save(); 
$user->roles()->attach($roles); 

Der wichtigste Teil ist, dass Sie den Benutzer speichern, bevor die Rollen angebracht, da sonst der Benutzer noch keine ID müssen in die verwendet werden, Pivot-Tabelle.

+0

Ich versuchte es, aber es einen Fehler zurückgibt, Call to undefined Methode \\ Datenbank Illuminate \\ Eloquent \\ Collection :: attach() –

+3

Das hört sich so an, als würden Sie '$ user-> roles-> attach ($ roles)' ... – lukasgeiter

+2

Nur um zu verdeutlichen, sind die Klammern wichtig! '' '$ user-> roles()' '' NOT '' '$ user-> roles''' – dloomb

Verwandte Themen