Using Laravel 5.5 how do I duplicate a column in a table with a migration?

I would like to duplicate a column on my existing seasons table using a migration in Laravel 5.5.

I can do it using SQL running these two queries:

ALTER TABLE seasons ADD uploader_channel_partner_id BIGINT NULL 


UPDATE seasons set seasons.uploader_channel_partner_id = seasons.channel_partner_id

I am creating a system where you can transfer the ownership of videos while keeping the original uploader stored.

The up function of my migration currently just has this inside it:

Schema::create('seasons', function (Blueprint $table) {


I’ve made it work with this but it’s slow and ugly and I’m sure there is a better way:

public function up()
    Schema::table('seasons', function (Blueprint $table) {
    $seasons = Season::withTrashed()->get();
    foreach ($seasons as $key => $season) {
        $season->uploader_channel_partner_id = $season->channel_partner_id;


You can use DB::raw() to force Sql to use another column instead of a string value.

        'uploader_channel_partner_id' => DB::raw('`channel_partner_id`'),

Leave a Reply

Your email address will not be published. Required fields are marked *