Laravel 通过数组请求批量更新

Laravel Bulk Update via a array request

id incharge_id member_id project_id
1 3 1 1
2 3 4 1
3 3 2 1
4 3 6 1
5 5 2 2
6 5 4 2

我正在处理以上 table projectmembers 的更新。 $request->member_id returns 包含很少 user_ids 的数组,例如 [1,4,2,6]

I have to update the member_id's of specific project_id

foreach ($request->member_id as $item => $value) {
    DB::table('projectmembers')
        ->where('project_id', $id)
        ->update([
            'member_id' => $request->member_id[$item]['member_id']
        ]);
}

在某些情况下,project_id 可以有 3 个成员/5 个成员,这取决于我们从 $request->member_id 获得的请求。在 table

上更新 member_ids 的最佳方法是什么

下一个解决方案是分两步更新您的 table。

  1. project_id
  2. 的基础上删除数据
  3. 并准备 request->member_idproject_id 数组用于插入。

假设我们有 project_idincharge_id 请求。 让我们举个例子。

TableName::where('project_id', $project_id)->delete();

$array = array();
foreach ($request->member_id as $key => $val) {
    $array[] = [
        'member_id' => $val['member_id'],
        'project_id' => $project_id,
        'incharge_id' => $incharge_id
    ];
}

TableName::insert($array);

您可以在 2 个查询而不是 5 个查询中更新您的 table。