更新权限页面违反完整性约束

我在 Laravel 5.5 中使用 Laratrust 包,我制作了一个页面来创建具有角色和权限的用户。这运行良好,但问题出在我的更新页面上。我无法更新权限的值,我不知道为什么。


这是我的更新页面代码:


public function update(Request $request, User $user)

{

     $request_data = User::find(1);


     $request->validate([

         'name' => 'required|string|max:255',

        'email' => 'required|string|email|max:255|unique:users',


    ]);

   $request_data=$request->except(['permissions']);



    $user->update($request_data);

     $user->syncPermissions($request->permissions);


      return redirect('dashboard/index');


}

这是我的编辑刀片页面:


<form class="m-form m-form--fit m-form--label-align-right m-form--group-seperator" method="post" action="{{ url('dashboard/update/users',$user->id) }}">

     {{ csrf_field() }}

     {{ method_field('put') }}

     <div class="m-portlet__body">           

         <div class="form-group{{ $errors->has('name') ? ' has-error' : '' }}">

                        <label for="name" class="col-md-4 control-label">Name</label>


                        <div class="col-md-6">

                            <input id="name" type="text" class="form-control" name="name" value="{{ $user->name }}" required autofocus>


                            @if ($errors->has('name'))

                                <span class="help-block">

                                    <strong>{{ $errors->first('name') }}</strong>

                                </span>

                            @endif

                        </div>

                    </div>


慕桂英4014372
浏览 147回答 2
2回答

当年话下

您可以删除 role_permission 的记录,然后附加新的权限$user->syncPermissions($request->permissions);如果包中没有任何方法更新值,这可能对您有所帮助

holdtom

首先,看看这一行:$request_data&nbsp;=&nbsp;User::find(1);我不确定为什么会出现这种情况 - 您在验证后立即重新定义它。建议去掉。权限更新的问题可能在于您构建 sync() 方法的方式。这是我习惯看到的方式:$user->permissions()->sync($request->get('permissions',&nbsp;[]));[] 是可选的,但试试看是否有帮助。另外,我不确定$request对象的权限来自哪里。也许您没有将它包含在上面的代码片段中,但我没有看到它在刀片文件中的分配位置。因此,我的答案中的上述更新代码(Laravel 标准而不是包格式)至少应该有效 - 如果permissions表单上确实没有字段来更改权限,它应该恢复为无权限
打开App,查看更多内容
随时随地看视频慕课网APP