Php 无法更新表单数据

Php 无法更新表单数据,php,laravel,insert-update,Php,Laravel,Insert Update,[![字段保留旧值][1][1] 在使用Laratrust设置角色和权限后,我正在尝试更新带有姓名、电子邮件和角色的表单, 我的用户控制器: public function update(Request $request, User $user) { dd($request->all()); // here Array of data is successfully updated $request->validate([ 'name'=>

[![字段保留旧值][1][1]

在使用Laratrust设置角色和权限后,我正在尝试更新带有姓名、电子邮件和角色的表单, 我的用户控制器:

public function update(Request $request, User $user)
 {
    dd($request->all());  // here  Array of data is successfully updated
    $request->validate([
        'name'=>'required',
        'email'=>'required|unique:users,email',
        'role_id'=>'required|numeric',
    ]);

    $user->update($request->all());
     $user->syncRoles($request->role_id); 
    session()->flash('success','Data updated successfully');
      return redirect()->route('dashboard.users.index');   //failed to redirect
 }  //end of Update Fn
My edit.blade有以下内容:

 <form  method="POST" action="{{route('dashboard.users.update', $user->id)}}">
        @method('PUT')
我得到了以下错误: ErrorException为foreach()提供的参数无效。
C:\xampp\htdocs\mynet\vendor\santigarcor\laratrust\src\Traits\LaratrustUserTrait.php:343

请尝试以下代码:

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

    $request->validate([
        'name'=>'required',
        'email'=>'required|unique:users,email',
        'role_id'=>'required|numeric',
    ]);

    $user->attachRole($request->role_id);
    $user->update($request->all());
    $user->refresh(); // Reload User or $user->load('roles');
    session()->flash('success','Data updated successfully');
      return redirect()->route('dashboard.users.index');  
 }
代码应为: 1-$user->attachRole($request->role\u id);ins上位函数 2-索引叶片应具有:

 @foreach($user->roles as $role)
       <h5>{{$role->name}}</h5>
 @endforeach


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

    $request->validate([
        'name'=>'required',
        'email'=>'required',
        'role_id'=>'required|numeric',
    ]);
    $user->name = $request->Name;
    $user->email = $request->email;
    $user->attachRole($request->role_id);

    $user->update($request->all());
    $user->refresh(); // Reload User or $user->load('roles');
    session()->flash('success','Data updated successfully');
      return redirect()->route('dashboard.users.index');
 }  //end of updates
@foreach($user->roles as$role)
{{$role->name}
@endforeach
公共功能更新(请求$Request,用户$User)
{
$request->validate([
'name'=>'required',
'电子邮件'=>'必需',
'role_id'=>'required | numeric',
]);
$user->name=$request->name;
$user->email=$request->email;
$user->attachRole($request->role\u id);
$user->update($request->all());
$user->refresh();//重新加载用户或$user->load('roles');
session()->flash('success','Data update successfully');
return redirect()->route('dashboard.users.index');
}//更新结束

您的r出现了什么错误。?没有出现错误,只有相同的视图具有相同的日期,没有更新,甚至重定向到未执行的索引。请检查操作路径您的dd(),如果工作路径与创建和删除一致,我没有找到任何调用
更新()的路径
函数可以显示吗?我认为应该在syncRoles()函数中传递更新后的角色<代码>$roles=$user->getRoleNames()
$user->syncRoles($roles)我必须删除这一行://$user->syncRoles($request->role\u id)//修改管理员,使姓名和电子邮件可以更新,但不能更新Role@Harbal我调用了未定义的方法App\User::getRoleNames()
 @foreach($user->roles as $role)
       <h5>{{$role->name}}</h5>
 @endforeach


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

    $request->validate([
        'name'=>'required',
        'email'=>'required',
        'role_id'=>'required|numeric',
    ]);
    $user->name = $request->Name;
    $user->email = $request->email;
    $user->attachRole($request->role_id);

    $user->update($request->all());
    $user->refresh(); // Reload User or $user->load('roles');
    session()->flash('success','Data updated successfully');
      return redirect()->route('dashboard.users.index');
 }  //end of updates