在模型中,我创建了自定义时间戳记:
const CREATED_AT = 'fil_ts';
const UPDATED_AT = 'fil_ts';
基本上,想法是只要更改记录, CREATED_AT 时间戳就会更新(换句话说: :我只有一个时间戳,它充当创建和更新的时间戳 )。
如何使这些自定义时间戳出现在数据库表的槽迁移中?创建表时,是否需要在迁移文件中创建它们?
1。我是否需要像这样在迁移中定义自定义时间戳
$table->timestamp('fil_ts');
$table->timestamp('fil_ts');
2。或这样
$table->timestamps();
到目前为止,这些方法均无效。使用第一种方法时,出现一个错误,提示我不能具有相同的命名变量(这是逻辑上的,但是我不知道其他方法如何使SINGLE时间戳充当CREATED_AT和UPDATED_AT)。
如果我使用第二种方法,它只会创建默认时间戳。
我的最终目标:一个单独的自定义时间戳,其作用类似于created_at和Updated_at。首先,它获得创建时间戳,然后保持更新。
即使自定义时间戳名称不同,运行php artisan migration时我仍然会出错:
模型中的时间戳:
const CREATED_AT = 'file_created';
const UPDATED_AT = 'file_updated';
迁移中的时间戳记:
$table->timestamp('file_created');
$table->timestamp('file_updated');
Doctrine \ DBAL \ Driver \ PDOException::(“” SQLSTATE [42000]:语法错误或 访问冲突:1067'file_updated'的默认值无效)
模型中的代码: 需要禁用默认时间戳
public $timestamps = false;
const CREATED_AT = 'fil_ts';
const UPDATED_AT = 'fil_ts';
迁移中的代码
$table->timestamp('fil_ts');
答案 0 :(得分:2)
在您的模型中,通过编写以下代码来禁用默认时间戳。
public $timestamps = false;
要创建自己的时间戳,请使用此代码。
这将创建一个时间戳列。
$table->timestamp('fil_ts');