婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Laravel實現批量更新多條數據

Laravel實現批量更新多條數據

熱門標簽:濟源百應電銷機器人聯系方式 南京3D地圖標注 邢臺400電話辦理 咸陽電銷 重慶外呼電銷系統多少錢 嘟嘟云外呼系統 正規電銷機器人系統 辦理400電話哪家好點 南寧電話外呼系統線路

前言

近期在刷新生產環境數據庫的時候,需要更新表中的字段,如果對每條數據結果都執行一次update語句,占用的數據庫資源就會很多,而且速度慢。

因為項目是Laravel框架,Laravel有批量插入的方法,卻沒有批量更新的方法,沒辦法只能自己實現。

準備

mysql case…when的用法

MySQL 的 case when 的語法有兩種:

簡單函數

CASE [col_name] WHEN [value1] THEN [result1]…ELSE [default] END

CASE [col_name] WHEN [value1] THEN [result1]…ELSE [default] END: 枚舉這個字段所有可能的值

select id,status '狀態值', case status
when 10 then '未開始'
when 20 then '配送中'
when 30 then '已完成'
when 40 then '已取消'
End '狀態'
from table

輸出結果:

搜索函數

CASE WHEN [expr] THEN [result1]…ELSE [default] END

CASE WHEN [expr] THEN [result1]…ELSE [default] END:搜索函數可以寫判斷,并且搜索函數只會返回第一個符合條件的值,其他case被忽略

select id,lessee_id '租戶ID', case 
when lessee_id =1 then '自用系統'
when lessee_id >1 then '租用系統'
End '系統分類'
from waybill_base_info

case…when實現數據庫的批量更新

更新單列的值

UPDATE base_info SET
 city_id = CASE id
  WHEN 1 THEN 
  WHEN 2 THEN 
  WHEN 3 THEN 
 END
WHERE id IN (1,2,3)

這句sql的意思是,更新city_id 字段:

如果id=1 則city_id 的值為100010,

如果id=2 則 city_id 的值為100011,

如果id=3 則 city_id 的值為100012。

即是將條件語句寫在了一起。

這里的where部分不影響代碼的執行,但是會提高sql執行的效率。

確保sql語句僅執行需要修改的行數,這里只有3條數據進行更新,而where子句確保只有3行數據執行。

更新多列的值

UPDATE base_info SET
city_id = CASE id
WHEN 1 THEN 100010
WHEN 2 THEN 100011
WHEN 3 THEN 100012
END,
city_name = CASE id
WHEN 1 THEN ‘北京'
WHEN 2 THEN ‘上海'
WHEN 3 THEN ‘廣州'
END
WHERE id IN (1,2,3)

不過這個有個缺點 : 要注意的問題是SQL語句的長度,需要考慮程序運行環境所支持的字符串長度,當然這也可以更新mysql的設置來擴展。

Laravel實現批量更新

在model方法中封裝該批量更新的方法:

//批量更新
 public function updateBatch($multipleData = [])
 {
  try {
   if (empty($multipleData)) {
    Log::info("批量更新數據為空");
    return false;
   }
   $tableName = $this->table; // 表名
   $firstRow = current($multipleData);

  $updateColumn = array_keys($firstRow);
  // 默認以id為條件更新,如果沒有ID則以第一個字段為條件
  $referenceColumn = isset($firstRow['id']) ? 'id' : current($updateColumn);
  unset($updateColumn[0]);
  // 拼接sql語句
  $updateSql = "UPDATE " . $tableName . " SET ";
  $sets = [];
  $bindings = [];
  foreach ($updateColumn as $uColumn) {
   $setSql = "`" . $uColumn . "` = CASE ";
   foreach ($multipleData as $data) {
    $setSql .= "WHEN `" . $referenceColumn . "` = ? THEN ? ";
    $bindings[] = $data[$referenceColumn];
    $bindings[] = $data[$uColumn];
   }
   $setSql .= "ELSE `" . $uColumn . "` END ";
   $sets[] = $setSql;
  }
  $updateSql .= implode(', ', $sets);
  $whereIn = collect($multipleData)->pluck($referenceColumn)->values()->all();
  $bindings = array_merge($bindings, $whereIn);
  $whereIn = rtrim(str_repeat('?,', count($whereIn)), ',');
  $updateSql = rtrim($updateSql, ", ") . " WHERE `" . $referenceColumn . "` IN (" . $whereIn . ")";
  Log::info($updateSql);
  // 傳入預處理sql語句和對應綁定數據
  return DB::update($updateSql, $bindings);
 } catch (\Exception $e) {
  return false;
 }
}

在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的使用技巧請查看下面的相關鏈接

您可能感興趣的文章:
  • Laravel框架學習筆記之批量更新數據功能
  • Laravel 批量更新多條數據的示例
  • laravel實現批量更新多條記錄的方法示例

標簽:平頂山 南通 唐山 黃山 武漢 隴南 河南 通遼

巨人網絡通訊聲明:本文標題《Laravel實現批量更新多條數據》,本文關鍵詞  Laravel,實現,批量,更新,多條,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Laravel實現批量更新多條數據》相關的同類信息!
  • 本頁收集關于Laravel實現批量更新多條數據的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    一本到高清视频免费精品| 欧美色图一区二区三区| 国产精品中文有码| 精品视频1区2区3区| 亚洲精品国产无天堂网2021 | 日韩不卡免费视频| 欧美日韩精品欧美日韩精品一| 国产日韩精品一区二区三区| 国产v综合v亚洲欧| 国产精品视频一二三区| 成人a免费在线看| 日本丶国产丶欧美色综合| 日韩一级高清毛片| 中文字幕不卡一区| 一区二区三区日本| 国产成人综合在线播放| 精品一区免费av| 99久久精品免费看| 精品日韩欧美一区二区| 国产一二精品视频| 中文无字幕一区二区三区| 国产精品成人免费在线| 91啪在线观看| 国产欧美视频一区二区三区| 久久女同性恋中文字幕| 一级中文字幕一区二区| 亚洲一区在线看| 成人app下载| 琪琪久久久久日韩精品| 亚洲韩国一区二区三区| 麻豆久久久久久久| 成人中文字幕电影| 91蜜桃传媒精品久久久一区二区| 精品日韩一区二区三区| 亚洲影视在线播放| 激情av综合网| 日韩成人伦理电影在线观看| 日韩一区二区三区免费看| 欧美福利视频导航| 日韩欧美成人一区| 日本成人在线不卡视频| 国产偷v国产偷v亚洲高清| 成人激情小说网站| 久久综合九色综合欧美98| 五月婷婷综合在线| 欧美绝品在线观看成人午夜影视| 老鸭窝一区二区久久精品| 蜜臀av性久久久久蜜臀aⅴ| 一区二区在线观看视频| 99精品黄色片免费大全| 亚洲精品水蜜桃| 久久在线免费观看| 欧美久久久久久久久久| aaa欧美日韩| 国产在线看一区| 三级在线观看一区二区| 亚洲激情六月丁香| 国产精品国产三级国产aⅴ入口| 欧美一区二区三区小说| 欧美日韩国产一区| 97超碰欧美中文字幕| 国产成人av电影在线| 麻豆精品视频在线观看| 美腿丝袜在线亚洲一区 | 日本韩国欧美在线| 国内精品国产三级国产a久久 | 美腿丝袜在线亚洲一区| 亚洲成人资源网| 亚洲国产乱码最新视频 | 日韩欧美国产午夜精品| 欧美视频一区二区在线观看| 91亚洲午夜精品久久久久久| 丁香啪啪综合成人亚洲小说| 成人黄色免费短视频| 成人av网址在线| 91蜜桃传媒精品久久久一区二区| 99精品久久99久久久久| 色噜噜夜夜夜综合网| 97精品视频在线观看自产线路二| 97久久精品人人做人人爽| 色一情一伦一子一伦一区| 欧美日韩精品一区视频| 日韩一二三四区| 国产三级精品三级在线专区| 久久久高清一区二区三区| 中文字幕乱码久久午夜不卡| 国产精品萝li| 亚洲午夜羞羞片| 久久成人18免费观看| 国产成人自拍网| 91视视频在线直接观看在线看网页在线看| 成人精品视频一区二区三区尤物| 9i在线看片成人免费| 欧美日韩aaaaa| wwww国产精品欧美| 亚洲三级免费观看| 天堂va蜜桃一区二区三区| 青青国产91久久久久久| 国产成人日日夜夜| 欧美性高清videossexo| 欧美xxxxx牲另类人与| 国产精品久久免费看| 亚洲成a人片在线不卡一二三区| 日本成人在线网站| 成人黄色在线视频| 5566中文字幕一区二区电影| 久久精品亚洲精品国产欧美| 亚洲午夜久久久久| 成人污污视频在线观看| 日韩天堂在线观看| 中文字幕中文字幕一区二区| 美女任你摸久久| 欧洲人成人精品| 国产精品色一区二区三区| 日本网站在线观看一区二区三区| 成人午夜免费av| 精品国内片67194| 五月天亚洲婷婷| 色综合天天综合| 国产欧美一区二区在线| 精一区二区三区| 欧美精品v日韩精品v韩国精品v| 国产精品成人在线观看| 国产成人夜色高潮福利影视| 欧美一区二区大片| 婷婷激情综合网| 欧美主播一区二区三区| 亚洲欧美怡红院| 成人涩涩免费视频| 日本一区二区视频在线| 激情综合色播激情啊| 欧美xxxx老人做受| 另类小说图片综合网| 欧美一区二区三区四区久久 | 亚洲国产日产av| 成人激情动漫在线观看| 久久久一区二区三区| 久久精品国产999大香线蕉| 欧美一区二区三区的| 日韩精品一二三| 3d成人h动漫网站入口| 五月婷婷久久综合| 在线不卡中文字幕| 日韩黄色在线观看| 8x8x8国产精品| 日日夜夜免费精品视频| 欧美精品v日韩精品v韩国精品v| 亚洲欧洲制服丝袜| 91亚洲国产成人精品一区二三| 国产精品国产a级| 日日骚欧美日韩| 欧美成人官网二区| 国产在线精品一区二区| 2014亚洲片线观看视频免费| 国产在线播放一区| 国产精品夫妻自拍| 色国产精品一区在线观看| 亚洲一区二区在线播放相泽| 7799精品视频| 国产一区二区三区四| 亚洲人123区| 欧美欧美欧美欧美首页| 九九九精品视频| 日韩一区日韩二区| 欧美精品色综合| 精品一区二区在线免费观看| 久久久久久久久久久久久久久99| 国产毛片一区二区| 亚洲色图另类专区| 欧美日韩不卡视频| 国产精品一级在线| 一区二区三区高清| 日韩亚洲欧美中文三级| 国产91露脸合集magnet| 亚洲色图丝袜美腿| 欧美一区二区性放荡片| 不卡的av在线| 蜜臀av性久久久久av蜜臀妖精| 国产女同性恋一区二区| 欧美日韩三级在线| 成人高清免费观看| 天天影视涩香欲综合网| 久久久久久久免费视频了| 91丨国产丨九色丨pron| 黄一区二区三区| 亚洲最大成人综合| 国产欧美中文在线| 69堂精品视频| 色女孩综合影院| 粉嫩绯色av一区二区在线观看| 亚洲一区中文在线| 国产精品久久久久天堂| 日韩一区二区免费电影| 99re66热这里只有精品3直播 | 欧美日韩在线播| www.久久精品| 国产九九视频一区二区三区| 日韩综合小视频| 亚洲国产精品久久久男人的天堂| 国产婷婷色一区二区三区四区|