繁体   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