我需要更新附加用户,我有用户附加到项目,我需要通过添加新的附加用户来编辑项目,所以我的代码看起来像这样
$project = Project::find($id);
$project->update($request->all());
$array = $project->users;
foreach ($array as $item){
if($request->input('user_id') != $item->id){
Log::info('user new ids: ',[$item->id]);
$project->users()->attach($request->input('user_id'));
}
else{
Log::info('user aleardy attached');
}
}
return response()->json($organisation);
此代码重复数据库中的用户我发现同一个用户分配给项目多次
这个代码只是为了附加,所以如何解决这个问题,谢谢你
答案 0 :(得分:2)
您正在遍历附加到项目的每个用户。在每次迭代时,您都在检查id
是否与提交的user_id匹配。对于几乎所有迭代,这将评估为false并且将再次附加用户。
例如:
用户4
,5
,6
已附加到项目中。 user_id
= 2
。
循环将产生以下结果:
4!=2
,请附上用户。
5!=2
,请附上用户。
6!=2
,请附上用户。
如您所见,用户将被添加3次。
我会用这样的东西:
if ($project->users()->where('users.id',$request->input('user_id'))->count()==0){
Log::info('user new ids: ',[$item->id]);
$project->users()->attach($request->input('user_id'));
}else{
Log::info('user aleardy attached');
}
上述查询将查找附加到项目的所有与提交的user_id
匹配的用户。如果计数为0,则user_id
未附加到项目中,因此您可以附加它。