16

i need to add a last_activity column on a table of a live site where i have to make it's default value to equal of updated_at column value. I'm using laravel 5.1 and mysql database driver.

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

Thanks.

Parvez Rahaman
  • 4,269
  • 3
  • 22
  • 39

1 Answers1

49

This should work:

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

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

See "Running a General Statement": https://laravel.com/docs/5.1/database#database-transactions

To enforce this relationship when a User is created or updated, you can use Model Events and/or Model Observers.

tptcat
  • 3,894
  • 2
  • 32
  • 51
  • 4
    If you use `$table->timestamp('last_activity')->useCurrent();` it'd continue to set last_activity whenever the row is updated. – Ben Swinburne May 12 '16 at 12:39