Performance: Seeding data
Seeding data affects initial database setup speed and can impact server response time during development or testing.
<?php use Illuminate\Database\Seeder; use Illuminate\Support\Facades\DB; class DatabaseSeeder extends Seeder { public function run() { $users = []; for ($i = 0; $i < 10000; $i++) { $users[] = [ 'name' => 'User ' . $i, 'email' => 'user' . $i . '@example.com', 'password' => bcrypt('password'), ]; } DB::table('users')->insert($users); } }
<?php use Illuminate\Database\Seeder; use Illuminate\Support\Facades\DB; class DatabaseSeeder extends Seeder { public function run() { for ($i = 0; $i < 10000; $i++) { DB::table('users')->insert([ 'name' => 'User ' . $i, 'email' => 'user' . $i . '@example.com', 'password' => bcrypt('password'), ]); } } }
| Pattern | Database Calls | Execution Time | Server Load | Verdict |
|---|---|---|---|---|
| Single inserts in loop | 10,000 calls | High | High | [X] Bad |
| Batch insert all records | 1 call | Low | Low | [OK] Good |
php artisan make:seeder SeederName.php artisan db:seed --class=UserSeeder?
public function run() {
DB::table('users')->insert([
['name' => 'Alice', 'email' => 'alice@example.com'],
['name' => 'Bob', 'email' => 'bob@example.com']
]);
}insert adds multiple records at once.public function run() {
DB::table('products')->insert(
['name' => 'Book', 'price' => 10],
['name' => 'Pen', 'price' => 2]
);
}run method?User::factory()->count(100)->create(); to generate and save 100 users.Pass the test and this pattern moves unknown