Laravel Migration:添加一个默认值为现有列的列

Par*_*man 4 laravel laravel-5 laravel-migrations laravel-5.1

我需要在一个实时站点的表上添加一个last_activity列,我必须使它的默认值等于updated_at列值.我正在使用laravel 5.1和mysql数据库驱动程序.

Schema::table('users', function(Blueprint $table)
{
    $table->dateTime('last_activity')->default("COLUMN VALUE OF UPDATED_AT");
});
Run Code Online (Sandbox Code Playgroud)

谢谢.

tpt*_*cat 21

这应该工作:

Schema::table('users', function(Blueprint $table) {
    $table->dateTime('last_activity');
});

\DB::statement('UPDATE users SET last_activity = updated_at');
Run Code Online (Sandbox Code Playgroud)

请参阅"运行一般声明":https://laravel.com/docs/5.1/database#database-transactions

要在User创建或更新a时强制执行此关系,可以使用模型事件和/或模型观察器.

  • 如果使用`$ table-> timestamp('last_activity') - > useCurrent();`只要行更新,它就会继续设置last_activity. (2认同)