【问题标题】:Laravel Migration: Add a column with a default value of an existing columnLaravel 迁移:添加具有现有列默认值的列
【发布时间】: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");
});

谢谢。

【问题讨论】:

    标签: laravel laravel-5 laravel-5.1 laravel-migrations


    【解决方案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。
    猜你喜欢
    • 2015-08-12
    • 2021-01-17
    • 2021-09-01
    • 1970-01-01
    • 2016-08-28
    • 2011-10-29
    • 2019-01-28
    • 1970-01-01
    • 2021-05-13
    相关资源
    最近更新 更多