【问题标题】:Laravel 7: Cannot update record in users tableLaravel 7:无法更新用户表中的记录
【发布时间】:2021-05-09 13:11:09
【问题描述】:

我已搜索但找不到可行的解决方案。我根本无法更新用户表中的特定字段(状态)。我在 Laravel 的 auth users 原始表中添加了两个额外的字段。

这里是迁移代码:

public function up()
{
    Schema::table('users', function (Blueprint $table) {
        $table->unsignedBigInteger('role_id');
        $table->integer('status')->default(0);

        $table->foreign('role_id')->references('id')->on('roles');
    });
}

我还添加了可填充:

protected $fillable = ['name', 'email', 'password', 'role_id', 'status'];

现在的问题是我无法更新“状态”字段并且操作不会返回任何问题。我已经尝试过不同的方法。看看代码并指导我。 TIA。

public function update(Request $request, $id)
    {
        $validatedData = $request->validate([]);

        // APPROACH # 1
        $user = User::find($id);
        $user->status = $request->status;
        $user->save();

        // APPROACH # 2
        $user = User::find($id);
        $user->update([
            'status' => $request->status,
        ]);

        // APPROACH # 3
        User::findOrFail($id)->update($request->all());
    }

表格:

<form action="{{ url('/admin/user') }}/{{ $editRecord[0]->id }}" method="POST" enctype="multipart/form-data">
    @method('PUT')
    @csrf

    <select id="status" name="status" class="form-control">
        <option value="1" @if($editRecord[0]->status == 1) selected @endif>Active</option>
        <option value="0" @if($editRecord[0]->status == 0) selected @endif>In-Active</option>
    </select>
</form>

最后的路线:

Route::put('/admin/user/{id}', 'Admin\PortalController@update');

【问题讨论】:

  • 添加id看是否收到
  • 是的,收到了。 $request->status 也收到了。
  • dd($user) 修改后,查看显示什么?
  • dd($request-&gt;all()); 的输出是什么?
  • @shams 它给出了“App\User”数组,其中#original 中的“status”值为“1”,这是正确的。

标签: php laravel vue.js eloquent


【解决方案1】:

然后代码工作正常可能是您忘记使用成功消息重定向回来。你应该试试下面 -

    if($user->save()){
        return redirect()->back()->with('message', 'updated successfully');
     } else {
       return redirect()->back()->with('error', 'something went wrong');
     }

然后在刀片文件中-

     @if(session()->has('message'))
       <div class="alert alert-success">
          {{ session()->get('message') }}
       </div>
     @endif
    
     @if(session()->has('error'))
       <div class="alert alert-danger">
          {{ session()->get('error') }}
       </div>
     @endif

【讨论】:

  • 没有。我已经添加了那些成功和错误消息。控制器甚至重定向到另一个页面并显示成功消息。但是数据库表列字段“状态”没有被更新。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-22
  • 2019-09-12
  • 2012-11-21
  • 1970-01-01
  • 2023-03-28
  • 1970-01-01
相关资源
最近更新 更多