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