J'ai trois tables,
roles(id, name);
users(id, email, password);
user_role(id, user_id, role_id);
Dans ce scénario, la table des utilisateurs est associée à la table des rôles avec une relation plusieurs à plusieurs.
J'ai deux modèles éloquents comme
Role
+users(){
belongsToMany('User')
}
User
+roles(){
belongsToMany('Role')
}
Maintenant, la question est de savoir quand je veux ajouter un nouvel utilisateur avec des identifiants de rôles que je voudrais attribuer aux utilisateurs. Comment puis-je insérer des valeurs dans le tableau croisé dynamique avec les meilleures pratiques Laravel?
Mon code existant est: -
$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();
Que faire ensuite???
C'est vraiment tout décrit dans la documentation .
Quoi qu'il en soit, voici comment vous le faites:
$user = new User();
$user->username = Input::get('username');
$user->password = Hash::make(Input::get('password'));
$user->save();
$user->roles()->attach($roles);
La partie importante est que vous devez enregistrer l'utilisateur avant d'attacher les rôles, car sinon l'utilisateur n'a pas encore d'identifiant à utiliser dans le tableau croisé dynamique.