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); } }
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With