【发布时间】:2019-05-06 07:00:05
【问题描述】:
这就是我想要做的,当创建一个新行时,updated_at 列应该得到一个null 值,当该行更新时,该列应该填充当前的timestamp
Schema::create('city', function (Blueprint $table) {
$table->increments('id');
$table->string('name')->unique();
$table->enum('visibilty', ['Visible', 'Invisible'])->default('Invisible');
$table->string('created_by')->nullable();
$table->softDeletes();
$table->dateTime('created_at')->default(\DB::raw('DATETIME'));
$table->timestamp('updated_at')->default(\DB::raw('CURRENT_TIMESTAMP'));
});
【问题讨论】:
-
试试
timestamp('updated_at')->nullable()? Eloquent 在保存时无论如何都会更新时间戳,所以除非你没有使用 Eloquent,否则你不需要添加任何其他内容。 -
作为一个选项,Schema Builder 有
$table->nullableTimestamps(),它将创建created_at和updated_at作为具有空值的时间戳字段。 Eloquent 仍然会在创建时插入 created_at,并在更新时更新 updated_at。 -
当您使用
eloquent时,它会在您创建新行时插入当前timestamp,您应该使用DB::table('table_name')->insert([])来创建新行。
标签: php laravel laravel-5 database-migration