欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

使用Laravel怎么批量更新多條數(shù)據(jù)-創(chuàng)新互聯(lián)

使用Laravel怎么批量更新多條數(shù)據(jù)?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。

田家庵ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18982081108(備注:SSL證書合作)期待與您的合作!

準(zhǔn)備

mysql case…when的用法

MySQL 的 case when 的語法有兩種:

簡單函數(shù)

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

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

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

輸出結(jié)果:

使用Laravel怎么批量更新多條數(shù)據(jù)

搜索函數(shù)

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

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

select id,lessee_id '租戶ID', case 
when lessee_id <=1 then '自用系統(tǒng)'
when lessee_id >1 then '租用系統(tǒng)'
End '系統(tǒng)分類'
from waybill_base_info

使用Laravel怎么批量更新多條數(shù)據(jù)

case…when實現(xiàn)數(shù)據(jù)庫的批量更新

更新單列的值

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部分不影響代碼的執(zhí)行,但是會提高sql執(zhí)行的效率。

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

更新多列的值

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語句的長度,需要考慮程序運行環(huán)境所支持的字符串長度,當(dāng)然這也可以更新mysql的設(shè)置來擴展。

Laravel實現(xiàn)批量更新

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

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

  $updateColumn = array_keys($firstRow);
  // 默認(rèn)以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);
  // 傳入預(yù)處理sql語句和對應(yīng)綁定數(shù)據(jù)
  return DB::update($updateSql, $bindings);
 } catch (\Exception $e) {
  return false;
 }
}

在service層拼接需要更新的數(shù)據(jù),并調(diào)用該函數(shù):

 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);
 }

拼接的批量更新的數(shù)組格式為:

$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)

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進一步的了解或閱讀更多相關(guān)文章,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司,的支持。

當(dāng)前題目:使用Laravel怎么批量更新多條數(shù)據(jù)-創(chuàng)新互聯(lián)
網(wǎng)站鏈接:http://aaarwkj.com/article34/cchope.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、品牌網(wǎng)站制作網(wǎng)站維護、網(wǎng)站建設(shè)移動網(wǎng)站建設(shè)、標(biāo)簽優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁設(shè)計公司
人妻有码av中文字幕久久| 日韩欧美黄网站免费看| 国产91极品尤物白丝美女| 亚洲成人免费电影观看| 一区二区先锋深夜中文字幕| 九九热视频这里是精品| 日产精品一级二级三级爱| 男人喜欢看的免费视频| 亚洲精品中文字幕码专区| 中文字幕日韩精品久久| 未满18禁止入内在线观看| 午夜少妇久久久久久久久| 欧美日韩免费一区二三区| 国产伦奸在线播放免费| 成年人午夜看片免费网站| 热久久青草精品欧美一区| 日韩熟女人妻一区二区| 国产精品亚洲伦理在线| 最近最新免费成人在线视频| 密臀av一区二区三区| 精品视频中文字幕天码| 国产精品久久一级黄片| 精品亚洲第一区二区免费在线| 全部网站免费在线观看等| 日韩欧美一区二区麻豆| 国产精品女同久久久久久| 午夜精品三级一区二区三区| 岛国大片日韩在线观看| 野花日本免费高清完整| 久久九九亚洲欧美中文字幕 | 激情啪啪啪的免费网站| 人妻中文字幕av资源| 激情五月婷婷久久av| 亚洲精品欧美日韩久久| 亚洲一区二区午夜福利亚洲| 中文字幕欧美精品日韩人妻| 91美女黑丝免费国产视频| 亚洲码欧美码一区二区三区| 日本免费观看一区久久| 亚洲欧美日韩精品av| 欧美日韩av在线一区二区|