You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel中如何通过表单按对应ID批量更新数据?

批量更新用户数据的Eloquent实现方案

我尝试用Eloquent通过表单批量更新数据库表中的数据,当前Blade视图已循环渲染出用户ID和name输入框,点击提交按钮时希望根据各自ID批量更新所有对应数据。以下是我的Blade视图代码和Controller代码,需要补充Controller中的实现逻辑:

原Blade视图代码

<form action="{{url('update/users')}}" method="post">
 @csrf
<table>
  <tbody>
     <tr>
         <th>ID</th>
         <th>Names</th>
     </tr>
     @foreach($data as $users)
     <tr>
     <td><input type="" name="id" value="{{$users->id}}" ></td>
     <td><input type="" name="name" value="{{$users->name}}" ></td>
     </tr> 
     @endforeach  
  </tbody>  
</table>
<button type="submit">Submit</button>
</form>

原Controller代码

public function update(Request $request){
     
     //code here
     // $users = Users::

     return back()->with('success','Successfully');
}

解决步骤

1. 修正Blade视图的表单字段命名

原代码中同名的name="id"和name="name"会导致提交时仅保留最后一行数据,必须改成数组格式来传递多条用户数据:

<form action="{{url('update/users')}}" method="post">
 @csrf
<table>
  <tbody>
     <tr>
         <th>ID</th>
         <th>Names</th>
     </tr>
     @foreach($data as $user)
     <tr>
     <!-- 将ID设为隐藏字段,避免用户修改 -->
     <td><input type="hidden" name="users[{{$user->id}}][id]" value="{{$user->id}}"></td>
     <td><input type="text" name="users[{{$user->id}}][name]" value="{{$user->name}}"></td>
     </tr> 
     @endforeach  
  </tbody>  
</table>
<button type="submit">Submit</button>
</form>

2. 补充Controller的更新逻辑

在Controller中添加数据验证和批量更新逻辑:

use App\Models\User; // 确保引入User模型

public function update(Request $request){
    // 验证提交的数据
    $validated = $request->validate([
        'users.*.id' => 'required|exists:users,id', // 确保ID存在于用户表
        'users.*.name' => 'required|string|max:255', // 验证name格式
    ]);

    // 循环更新每个用户数据
    foreach ($validated['users'] as $userData) {
        User::where('id', $userData['id'])
            ->update(['name' => $userData['name']]);
    }

    return back()->with('success','批量更新成功');
}

说明

  • 数组格式的表单字段users[{{$user->id}}][name]能让后端接收到包含所有用户ID和对应name的数组
  • 数据验证确保提交的ID合法、name符合格式要求
  • 循环更新逻辑简单直观,适合中小规模的数据批量更新;如果数据量极大,可考虑使用数据库批量更新语句提升效率

内容的提问来源于stack exchange,提问作者sally

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 09:16:16