Skip to content
Advertisement

Laravel how to create a seeder based on array

How can I create a laravel-seeder based on an array?

I have an array like this:

$positions = array(
    array('industry_id' => '1', 'name' => 'developer'), 
    array('industry_id' => '1', 'name' => 'designer'),
    array('industry_id' => '2', 'name' => 'project manager'),
    array('industry_id' => '3', 'name' => 'manager'),
   ...etc, etc,...etc // there are like 150 entries
 ) 

So instead of doing like this

Position::create([
   'industry_id' => '1',
   'name' => 'developer'
]);

for each entry, I was hoping there might be another way to achieve that?

Advertisement

Answer

Option A)

$positions = array(
    array('industry_id' => '1', 'name' => 'developer'), 
    array('industry_id' => '1', 'name' => 'designer'),
    array('industry_id' => '2', 'name' => 'project manager'),
    array('industry_id' => '3', 'name' => 'manager'),
    ....
 );

 foreach ($positions as $position) {
     Position::create([
      'industry_id' => $position['industry_id'],
      'name' => $position['name'],
    ]);
 }

Option B)

DB::table((new Position)->getTable())->insert($positions);

Note: Insert doesn’t automatically populate the timestamp columns.

User contributions licensed under: CC BY-SA
8 People found this is helpful
Advertisement