Veritabanını Şenlendirelim
Merhaba dostlar! Ben Uğurcan. LaraFreelancer serimizin 6. günündeyiz.
Yarın admin panelimizde listeleme yapacağız. Ama boş bir tabloyu listelemenin bir havası olmaz, değil mi? Bize veri lazım. Hem de çok veri.
"Elle girerim ne olacak?" demeyin. Projeyi test ederken 500 müşteri, 1000 proje kaydına ihtiyacınız olduğunda elle girmek saatler sürer. Biz bunu saniyeler içinde yapacağız.
Adım 1: Fabrikayı Kurmak (Factory)
Laravel'de her Model'in bir üretim fabrikası olabilir. Dün oluşturduğumuz Client (Müşteri) modeli için bir fabrika kuralım.
Terminali açın:
php artisan make:factory ClientFactory
database/factories/ClientFactory.php dosyasını açın. Laravel bizim için Faker kütüphanesini hazır etmiş. definition metodunun içini şöyle dolduralım:
public function definition(): array
{
return [
'name' => fake()->name(), // Rastgele bir isim üret (Örn: John Doe)
'email' => fake()->unique()->safeEmail(), // Benzersiz bir mail üret
'phone' => fake()->phoneNumber(), // Rastgele telefon no
'budget' => fake()->numberBetween(1000, 50000), // 1000 ile 50.000 arası bütçe
];
}
Adım 2: Tohumları Ekmek (Seeder)
Fabrikayı kurduk, şimdi "Bana 50 tane müşteri üret" emrini verecek olan Seeder dosyasını ayarlayalım.
database/seeders/DatabaseSeeder.php dosyasını açın. run metodunun içine şu sihirli satırı ekleyin:
public function run(): void
{
// Client fabrikasını çalıştır ve 50 tane sahte müşteri oluştur
\App\Models\Client::factory(50)->create();
}
Adım 3: Büyük Patlama! (Migrate Fresh & Seed)
Şimdi terminale gidiyoruz. Veritabanımızı tamamen sıfırlayıp, tertemiz tablolar kurup, içine de 50 tane müşteriyi tek seferde basacağız.
Şu komutu yazın (Dikkat: Bu komut mevcut verileri siler!):
php artisan migrate:fresh --seed
Ekranda "Database seeding completed successfully." yazısını gördüyseniz işlem tamam.
Gidin phpMyAdmin'e veya veritabanı görüntüleyicinize bakın. clients tablosunda birbirinden farklı 50 tane müşteri göreceksiniz. Büyü gibi değil mi? 🪄
VS Code İpucu 💡
Kod yazarken aynı kelimeyi birden fazla yerde değiştirmek mi istiyorsunuz?
- Değiştireceğiniz kelimeyi seçin (Örn: fake()).
- Ctrl + D (Mac: Cmd + D) tuşuna arka arkaya basın.
- Aynı kelimeleri sırayla seçecektir. Şimdi yazmaya başlayın, hepsi aynı anda değişir!
Adım 4: Save Point (Git Commit)
Bu otomasyonu kaybetmeyelim.
git add . git commit -m "Gün 6: Client Factory ve Seeder yapılandırıldı, test verileri basıldı" git push
🎯 GÜNÜN GÖREVİ (Challenge)
Fabrika işçisi değil, fabrika sahibi ol!
- Terminalden ProjectFactory oluştur.
- definition içinde:
- title için fake()->sentence(3) (3 kelimelik başlık),
- description için fake()->paragraph() (Paragraf),
- status için fake()->randomElement(['bekliyor', 'devam_ediyor', 'tamamlandi']) kullan.
- DatabaseSeeder.php içine proje üretim kodunu da ekle (20 tane proje üret).
- Terminale php artisan migrate:fresh --seed yaz.
- Sonucu (dolu tabloları) ekran görüntüsü al ve yorumlarda "Fabrika bacaları tütüyor!" yazarak paylaş.