J'ai deux modèles, User
et Team
La relation entre eux est ManyToMany
:
Dans User
:
public function teamMembers(){
return $this->belongsToMany('App\Team')->withPivot('id');;
}
Et dans Team
:
public function teamMembers(){
return $this->belongsToMany('App\User')->withPivot('id');;
}
Maintenant, je veux ajouter des utilisateurs à une équipe spécifique. Le nom du tableau croisé dynamique est donc team_user
.
Maintenant, les données que je veux insérer dans le tableau croisé dynamique sont:
array:4 [▼
"_token" => "mlwoAgCQYals1N1s2lNa4U5OTgtMNHh9LUhNGrWh"
"team_id" => "1"
"members_id" => array:3 [▼
0 => "2"
1 => "3"
2 => "4"
]
"status" => "1"
]
Ce que je fais dans mon contrôleur:
$team_id = $request->get("team_id");
$team = \App\Team::findOrFail($team_id);
foreach ($request->get('members_id') as $key => $value) {
$team->teamMembers()->attach($team);
$team->save();
}
Mais il n'insère qu'un seul enregistrement, je veux dire le team_id
et le premier member_id
. Je veux qu'il crée un enregistrement par membre à partir du members_id
tableau. Comment vais-je faire ça?
Vous devez transmettre un tableau d'ID utilisateur à la méthode attach()
.
Pour plus de commodité,
attach
etdetach
acceptent également les tableaux d'ID en entrée
Changez votre code pour:
$team = \App\Team::findOrFail($request->team_id);
$team->teamMembers()->attach($request->members_id);