簡體   English   中英

在 MySQL 中更新記錄時,Laravel 的 useCurrent() 不起作用

[英]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_atupdated_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM