Reputation: 6830
I was wondering if it's possible to insert multiple rows like this (or something like this):
<?php
use Illuminate\Database\Seeder;
class SettingTableSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
DB::table('settings')->insert(
[
'key' => 'username',
'value' => 'testusername'
],
[
'key' => 'password',
'value' => 'plain'
]
);
}
}
I have a table settings in my database with columns key & value.
The problem with the code above is that he only inserts the first one ... .
Upvotes: 7
Views: 18460
Reputation: 1
Just repeate the DB::table code as much as you want inside the run method!:
DB::table('settings')->insert(
[
'key' => 'username',
'value' => 'testusername1'
]
);
DB::table('settings')->insert(
[
'key' => 'username',
'value' => 'testusername2'
]
);
DB::table('settings')->insert(
[
'key' => 'username',
'value' => 'testusername3'
]
);
Upvotes: -1
Reputation: 5445
you can use insert method from eloquent for bulk save like
Settings::insert([[
'key' => 'username',
'value' => 'testusername'
],
[
'key' => 'password',
'value' => 'plain'
]]);
Upvotes: 1
Reputation: 1527
You need to wrap your arrays in another array, so it would look like this:
DB::table('settings')->insert([
[
'key' => 'username',
'value' => 'testusername'
],
[
'key' => 'password',
'value' => 'plain'
]
]);
Notice the wrapping array.
What you are doing now is actually sending two separate arrays to the insert()
method.
Upvotes: 35