Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Seed multiple rows at once laravel 5

I'm currently trying to seed my users table. If I try it like this with 2 rows, it fails. It works fine if I just use a single array instead of the 2 arrays inside the $users array to create some fake data.

What am I doing wrong, what is the proper way to do this?

class UserTableSeeder extends Seeder {      public function run()     {         DB::table('users')->delete();          $users = [             ['id' => 1, 'name' => 'Stephan de Vries', 'username' => 'stephan', 'email' => '[email protected]', 'password' => bcrypt('carrotz124')],             ['id' => 2, 'name' => 'John doe', 'username' => 'johnny', 'email' => '[email protected]', 'password' => bcrypt('carrotz1243')],         ];          User::create($users);     }  } 

like image 764
Stephan-v Avatar asked Feb 18 '15 21:02

Stephan-v


1 Answers

If you have to use the model you need a loop:

foreach($users as $user){     User::create($user); } 

Otherwise you can just use DB::table() and insert:

DB::table('users')->insert($users); 

Actually you can also call insert() on the model (the resulting query is the same)

User::insert($users); 

Note if you choose the insert method you loose special Eloquent functionality such as timestamps and model events.

like image 51
lukasgeiter Avatar answered Sep 20 '22 15:09

lukasgeiter