佳木斯湛栽影视文化发展公司

主頁 > 知識庫 > Laravel 批量更新多條數(shù)據(jù)的示例

Laravel 批量更新多條數(shù)據(jù)的示例

熱門標簽:Linux服務(wù)器 團購網(wǎng)站 服務(wù)器配置 阿里云 電子圍欄 科大訊飛語音識別系統(tǒng) 銀行業(yè)務(wù) Mysql連接數(shù)設(shè)置

引言

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

任務(wù)要求

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

方法1

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

  $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();
  }      //更新數(shù)據(jù)表

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

方法2

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

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

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

一次數(shù)據(jù)通訊,加快了響應(yīng)速度又減少資源浪費,那么我可以這樣寫

復制代碼 代碼如下:

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

$notices的返回值是更改的數(shù)據(jù)行數(shù)

我們以后的應(yīng)用中會有很多種類似的任務(wù),像是忽略一些通知、已讀一些消息等等,為了代碼的復用,我們可以寫一個方法,傳入表名、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)
}

總結(jié)歸納

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

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

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

標簽:廣元 江蘇 棗莊 萍鄉(xiāng) 大理 衢州 蚌埠 衡水

巨人網(wǎng)絡(luò)通訊聲明:本文標題《Laravel 批量更新多條數(shù)據(jù)的示例》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    厦门市| 六盘水市| 秭归县| 海晏县| 隆尧县| 抚松县| 新河县| 丹寨县| 茌平县| 科技| 西充县| 全椒县| 遵义县| 油尖旺区| 禹州市| 富民县| 阿瓦提县| 全椒县| 溆浦县| 红原县| 正宁县| 广平县| 怀来县| 获嘉县| 湖口县| 宁陵县| 横峰县| 鄄城县| 怀来县| 石阡县| 新宁县| 苍南县| 桓仁| 星子县| 云林县| 曲松县| 九台市| 武清区| 安多县| 涿鹿县| 赞皇县|