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

主頁 > 知識庫 > Laravel 批量更新多條數據的示例

Laravel 批量更新多條數據的示例

熱門標簽:隨州銷售電銷機器人公司 400電話申請辦理 外呼系統人工客服 全國各省地圖標注點 周口網絡回撥外呼系統 網絡電話400申請 百度地圖標注類型是酒店 商丘外呼系統好處 福建高頻外呼防封系統哪家好

引言

最近在寫任務中,碰到一個問題,需要批量更新多條數據,但是Laravel沒有提供這樣的方法,Google了一些方法,剛好借著任務來舉例說明一下。

任務要求

任務是一個簡單的清除未讀通知的API,其實就是把通知表中符合user id 和 is read = 0 的行中的 is_read改為1(0代表未讀,1代表已讀)。

方法1

我首先想到的是利用where()方法查出user id和is read符合條件的notices,然后利用foreach循環和save()更新數據表。

  $notices = Notice::where('user_id', $userId)
   ->where('is_read', 0)
   ->get();  //得到user_id 和 is_read 符合的notices
 
  foreach($notices as $notice) {
   $notice->is_read = 1;
   $notice->save();
  }      //更新數據表

這個方法確實可行,可是每次遍歷都會和數據庫進行通訊,當數據量很大的時候,響應速度就會很慢,也非常的浪費資源。

方法2

當我去Google一篇博文啟發了我: Laravel一次更新多條記錄,批量更新的方法

其實可以利用一條數據庫的SQL語句就搞定這個問題

UPDATE notices SET is_read = 1 WHERE user_id = 1 AND is_read =0

一次數據通訊,加快了響應速度又減少資源浪費,那么我可以這樣寫

復制代碼 代碼如下:

$notices = DB::update(DB::raw("UPDATE notices SET is_read = 1 WHERE user_id = 1 AND is_read =0"));

$notices的返回值是更改的數據行數

我們以后的應用中會有很多種類似的任務,像是忽略一些通知、已讀一些消息等等,為了代碼的復用,我們可以寫一個方法,傳入表名、user_id和要修改字段名

publish function update_batch_one($table, $user_id, $column) 
{
 $q ="UPDATE".$table.SET.$column."=1WHEREuser_id=".$user_id."AND".$column."=0";
 
 return DB::update(DB::raw($q)
}

總結歸納

這兩個方法都只能解決一些特定的問題,但是提供了一種思路,有時候用SQL語句可以很方便、簡單的操作數據表,如果我們需要根據不同的條件,批量肯定多條數據的多條信息那么就需要用SQL的WHEN THEN方法了,具體思路就是在我上邊貼出來的地址里。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

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

標簽:十堰 海南 樂山 迪慶 六安 佛山 南寧 定西

巨人網絡通訊聲明:本文標題《Laravel 批量更新多條數據的示例》,本文關鍵詞  Laravel,批量,更新,多條,數據,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Laravel 批量更新多條數據的示例》相關的同類信息!
  • 本頁收集關于Laravel 批量更新多條數據的示例的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 江山市| 秭归县| 会宁县| 广宗县| 子洲县| 新龙县| 和静县| 遵义县| 临泽县| 抚州市| 合阳县| 和田县| 蓬安县| 扬中市| 庆元县| 合阳县| 洛阳市| 枝江市| 乌鲁木齐县| 元朗区| 普兰店市| 洪江市| 五台县| 偏关县| 革吉县| 南丹县| 芦溪县| 望奎县| 时尚| 琼结县| 礼泉县| 深水埗区| 孙吴县| 阳东县| 延寿县| 麻江县| 尼勒克县| 鱼台县| 光泽县| 连江县| 阳曲县|