[英]Laravel's useCurrent() doesn't work when a record is updated in MySQL
我最近在我的數據庫中添加了一個新的遷移,它以最簡單的形式做了這樣的事情
If(Schema::hasTable('some_table')){
Schema::table('some_table', function (Blueprint $table) {
$table->dateTime('last_updated')->nullable(false)->useCurrent()->change();
});
}
根據這個關於 SE 的答案,Laravel 應該自動為我創建和更新 last_record 列,但我正在 MySQL 5.7.31 中測試這個,這對我來說絕對不是這種情況。 我使用的是 Laravel 7.5,我的 PHP 版本是 7.3.21。
同時,將CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
手動添加到我的數據庫也失敗了。 所以,這似乎是我的 MySQL 數據庫而不是 Laravel 本身的問題。 所以,我有兩個問題:
當插入或更新時沒有傳遞任何內容時,是否可以以某種方式使用 Laravel/PHP 始終向字段添加默認值?
編輯:@lagbox 詢問我如何在我的數據庫中保存/更新記錄。 這是如何
$record= TableModel::where('blah', $blah)
->first();
if($record){
$record->update([
'blah1' => $blah1,
'blah2' => $blah2
]);
}
您可以覆蓋 Eloquent 將自動處理的模型上用於created_at
和updated_at
時間戳的created_at
:
const UPDATED_AT = 'last_updated';
您還可以通過將const
設置為null
來禁用特定時間戳:
const CREATED_AT = null;
Laravel 7.x 文檔 - Eloquent - 模型約定 - 時間戳UPDATED_AT
CREATED_AT
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.