laravel - 自定义时间戳在 $model->save() 上复制 updated_at
问题描述
我有一个具有自定义时间戳的表和相关模型。迁移设置如下:
Schema::create('tests', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->timestamp('expire_at');
$table->timestamps();
});
我已经像这样设置了我的模型:
class Test {
protected $dates = [
'expire_at'
];
}
当我尝试仅更新名称字段时,它将字段设置expire_at
为与字段相同,updated_at
而不是简单地不更改它。
$test = Test::find(1);
$test->name = "Changed Value";
// Until here, the expire_at timestamp has its true value
// but on save(), it changes expire_at to updated_at time.
$test->save();
我在protected $dates
使用上有什么问题吗?
解决方案
您需要使列可以为空(或删除默认值,CURRENT_TIMESTAMP
):
$table->timestamp('expire_at')->nullable();
推荐阅读
- sql-server - 解析 XML 的更高效方式
- c# - 为什么登录尝试在 PasswordSignInAsync 方法(ASP.NET)中返回 {NotAllowed}
- java - 检查项目 lore 是否包含字符串 (loren.contains("§eSigned from "))
- python - Python 通过从两个字典/列表中选择项目来解决优化问题
- python-3.x - 为什么不能在 selenium 中运行 geckodriver?
- javascript - 检测 Javascript 中固定的 Chrome 扩展
- c++ - 为什么我在 leetcode 上收到 AddressSanitizer: heap-buffer-overflow on address 0x602000000058 错误?
- dictionary - 如何检查密钥是否存在于 Elixir 的深层嵌套 Map 中
- python - discord.py-我如何将消息发送到随机频道?
- javascript - 我如何检查给定的用户名和密码是否是用户输入的内容并提示成功或失败?HTML 和 JS