在service层拼接需要更新的数据,并调用该函数:
foreach ($taskInfo as $info) {
$cityId = $info['requirement']['city_ids'];
//此处省略n行代码
$cityInfo = ['id' => $dataId[$info['id']]['id'], 'city_id' => $cityId];
if ($cityInfo) {
$cityInfos[] = $cityInfo;
}
}
$res = $this->waybillDriverInfoModel->updateBatch($cityInfos);
}
拼接的批量更新的数组格式为:
$students = [
[‘id' => 1, ‘city_id' => ‘100010'],
[‘id' => 2, ‘city_id' => ‘100011'],
];
生成的SQL语句如下:
UPDATE base_info SET `city_id` = CASE WHEN `id` = 1 THEN 100010 WHEN `id` = 2 THEN 100011 ELSE `city_id` END WHERE `id` IN (1,2)
因为每次只操作20条数据,所以这样拼接的字符串不会太长,符合mysql的字符串长度的要求,解决问题。
本文主要讲解了Laravel实现批量更新多条数据的方法,更多关于Laravel的使用技巧请查看下面的相关链接







