Миграция Laravel: добавьте столбец со значением по умолчанию для существующего столбца

мне нужно добавить столбец last_activity в таблицу живого сайта, где я должен сделать его значение по умолчанию равным значению столбца updated_at. Я использую драйвер базы данных laravel 5.1 и mysql.

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

Спасибо.


person Parvez Rahaman    schedule 12.05.2016    source источник


Ответы (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, вы можете использовать события модели. и/или наблюдатели за моделями.

person tptcat    schedule 12.05.2016
comment
Если вы используете $table->timestamp('last_activity')->useCurrent();, он будет продолжать устанавливать last_activity при каждом обновлении строки. - person Ben Swinburne; 12.05.2016