Laravel 迁移:添加具有现有列默认值的列

Posted

技术标签:

【中文标题】Laravel 迁移:添加具有现有列默认值的列【英文标题】:Laravel Migration: Add a column with a default value of an existing column 【发布时间】:2016-09-08 03:28:37 【问题描述】:

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

Schema::table('users', function(Blueprint $table)

    $table->dateTime('last_activity')->default("COLUMN VALUE OF UPDATED_AT");
);

谢谢。

【问题讨论】:

【参考方案1】:

这应该可行:

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

\DB::statement('UPDATE users SET last_activity = updated_at');

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

要在创建或更新User 时强制执行此关系,您可以使用Model Events 和/或Model Observers。

【讨论】:

如果你使用$table->timestamp('last_activity')->useCurrent();,它会在行更新时继续设置last_activity。

以上是关于Laravel 迁移:添加具有现有列默认值的列的主要内容,如果未能解决你的问题,请参考以下文章

如何将具有默认值的两列添加到配置单元中的现有表?

Impala 添加具有默认值的列

如何在表中添加具有默认值的列

Laravel 迁移显示现有列的列不存在

如果源文件中不存在,ssis 添加具有默认值的列

Spark数据框不添加具有空值的列