更新附加用户Laravel 5.4重复用户已经附加

时间:2017-06-01 14:57:43

标签: laravel laravel-5

我需要更新附加用户,我有用户附加到项目,我需要通过添加新的附加用户来编辑项目,所以我的代码看起来像这样

$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);

此代码重复数据库中的用户我发现同一个用户分配给项目多次
这个代码只是为了附加,所以如何解决这个问题,谢谢你

1 个答案:

答案 0 :(得分:2)

您正在遍历附加到项目的每个用户。在每次迭代时,您都在检查id是否与提交的user_id匹配。对于几乎所有迭代,这将评估为false并且将再次附加用户。

例如: 用户456已附加到项目中。 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未附加到项目中,因此您可以附加它。