Laravel 自动将 "on update CURRENT_TIMESTAMP"添加到某些特定列

标签 laravel database-migration

我的迁移是这样的:

$table->bigIncrements('id');
$table->timestamp('from_date');
$table->timestamp('to_date');
$table->timestamps();

问题是,当我迁移它时,第二个 from_date 自动获取 on update CURRENT_TIMESTAMP 属性,因此这意味着当我更新其他列时,该列将是也更新了。这就是我不想要的。我该如何预防?

最佳答案

您需要将 DateTime 列设为可为空,然后 MySQL 不会添加该列。默认情况下,MySQL 将其添加到表中的第一个时间戳中,除非明确告知不要这样做(通过允许字段为空值)。这是 MySQL 的事情,而不是 Laravel 的事情。

$table->timestamp('colName')->nullable();

阅读:

Automatic Initialization and Updating for TIMESTAMP and DATETIME - MYSQL DOCS

Laravel & MySQL auto-adding “on update current_timestamp()” to timestamp fields

关于Laravel 自动将 "on update CURRENT_TIMESTAMP"添加到某些特定列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57832169/

相关文章:

validation - Laravel 小数验证规则

php - 无法重新绑定(bind) $request->setUserResolver

java - Flyway 数据库迁移中占位符的用途

php - 通过 Nginx Vs 部署 Laravel 站点。 PHP artisan 服务

php - 使用面包屑包时调用未定义的方法 Illuminate\Foundation\Application::share()

python - 重复表(相同)包括主键 - 使用 django south

sql - 检测到迁移到 Flyway 版本失败

Laravel 使用迁移制作模型

ruby-on-rails - t.belongs_to 和对 postgresql 数据库的影响

php - Laravel 4 文件上传