Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Run Update query in a migration in Laravel 5? [duplicate]

I need to add a new column in my laravel Project, no problem for this, I used the Schema::table() to update and it's ok. Now I need to find out how many records I have on this table and update with some value.

I have the table Warrants:

Schema::create('warrant_grants', function(Blueprint $table) {
    $table->increments('id');
    $table->integer('warrant_plan_id');
    $table->integer('shareholder_id');
});

So I created the new field with a new migration file:

Schema::table('warrant_grants',function ($table) {
    $table->string('name',100);
});

Now I need to update this field name in the table with some values, for example if the table has 100 records, then I need to insert in every row the value "Warrant-X" where X is a number starting with 1 to 100. For example:

Warrant-1, Warrant-2, ....Warrant-100.

I spent hours looking for some way to do this using Seeds but I didn't found. So basically i have two questions:

  • Can I use Seeds in Laravel 5 to update values or I can just insert them?
  • Can I create some SQL inside the Seeds (or migrations) to do this update for me?
like image 373
Deric Lima Avatar asked Nov 17 '25 19:11

Deric Lima


1 Answers

Based on this link i found the answer: https://stackoverflow.com/a/23506744/4650792

Schema::table('warrant_grants',function ($table){
        $table->string('name',100)->after('id')->nullable();
    });

    $results = DB::table('warrant_grants')->select('id','name')->get();

    $i = 1;
    foreach ($results as $result){
        DB::table('warrant_grants')
            ->where('id',$result->id)
            ->update([
                "name" => "Warrant-".$i
        ]);
        $i++;
    }

Thanks for the help anyway guys.

like image 178
Deric Lima Avatar answered Nov 20 '25 10:11

Deric Lima



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!