如何執行批量更新多個Comment
記錄的發佈日期爲+1周期間?理想的結果的說明:使用口才大衆日期更新
$interval = CarbonInterval::week(); // 1 week interval, that needs to fit into below query
Comment::where('id', '>', 10)->update('publish_date', ...);
如何執行批量更新多個Comment
記錄的發佈日期爲+1周期間?理想的結果的說明:使用口才大衆日期更新
$interval = CarbonInterval::week(); // 1 week interval, that needs to fit into below query
Comment::where('id', '>', 10)->update('publish_date', ...);
您可以使用DB::raw()
在數據庫中執行任意代碼 - 只要記住它可能無法移植到其他數據庫引擎。
下應該做的伎倆在MySQL的和其他引擎支持DATE_ADD功能:
Comment::where('id', '>', 10)->update(['publish_date' => DB::raw('DATE_ADD("publish_date", INTERVAL 1 WEEK)')]);
根據該文檔,你可以這樣做:
App\Models\Comment::where('id', '>', 10)->update([ 'publish_date' => Carbon\Carbon::parse(DB::raw("`publish_date`"))->addWeeks(1) ]);
根據對此:
Laravel文檔基本更新:加減
https://laravel.com/docs/5.2/eloquent#basic-updates
碳文檔:
謝謝您的回答。這種方法的問題在於,您不會將+1周添加到**現有**日期,而是從現在開始僅用+1周**將其覆蓋** –
對不起,我沒有注意到這一點。我的答案已更新。 –
此方法效率低下,因爲它爲每個單個記錄檢索'publish_date',不必要地加載數據庫 –
感謝的答案,但不是有辦法做到這一點通過本地使用雄辯? –
如果您想用單個查詢更新多行,則不行。在構建器中有增量方法,但它通過向給定列添加整數來工作,對於包含日期時間值的列不起作用 –