Seeder, Laravel’in veritabanı geliştirme süreçlerini kolaylaştıran güçlü bir özelliğidir. Veritabanı seed işlemi, önceden tanımlanmış veri kümesi ile veritabanı tablolarını doldurmayı sağlar. Bu işlem, genellikle uygulamanın başlangıç durumunu oluşturmak, test verileri eklemek veya uygulamanın geliştirilmesi sırasında veritabanını canlandırmak için kullanılır. Laravel, seed işlemlerini yönetmek için Artisan konsol komutları sunar ve bu sayede geliştiriciler, tek bir komutla veritabanını kolayca doldurabilir ve veri modellerini test edebilir. Bu özellik, geliştirme sürecinin hızlanmasına ve veritabanı işlemlerinin daha düzenli hale gelmesine katkıda bulunur.
Önceden tanımlı User modelini ve UsersTableSeeder
sınıfını kullanarak, 10 adet kullanıcı ekleyeceğiz. İlk olarak, UsersTableSeeder
sınıfını database/seeders
dizininde oluşturun.
php artisan make:seeder UsersTableSeeder
Şimdi, UsersTableSeeder
sınıfına aşağıdaki kodları ekleyerek 10 adet kullanıcı ekleyelim.
<?php
namespace Database\Seeders;
use App\Models\User;
use Illuminate\Database\Seeder;
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
class UsersTableSeeder extends Seeder
{
/**
* Run the database seeds.
*/
public function run(): void
{
// 10 adet kullanıcı oluşturun ve her birini rastgele doldurun
for ($i = 0; $i < 10; $i++) {
User::create([
'name' => 'Kullanici' . $i,
'email' => 'kullanici' . $i . '@ornek.com',
'password' => bcrypt('sifre123'),
]);
}
}
}
Bu kod, 10 adet kullanıcı oluşturacak ve her birini Kullanici0
, Kullanici1
, …, Kullanici9
olarak adlandıracaktır. E-posta adresleri de kullanici0@ornek.com
, kullanici1@ornek.com
, … şeklinde olacaktır. Tüm kullanıcılar için şifre “sifre123” olarak ayarlanmıştır.
Seeder sınıfını çalıştırmadan önce, DatabaseSeeder
sınıfını güncellemelisiniz. database/seeders/DatabaseSeeder.php
dosyasını açın ve run
fonksiyonuna aşağıdaki satırı ekleyin:
$this->call(UsersTableSeeder::class);
Son olarak, seed işlemini başlatmak için terminalde aşağıdaki komutu çalıştırın:
php artisan db:seed
Laravel’de seeder işlemini geri almak için doğrudan bir komut veya fonksiyon yoktur. Bunun yerine, veritabanındaki verileri geri almanız ve yeniden seed etmeniz gerekmektedir. Bu durumda, migrate:rollback
komutunu kullanarak son migration’ı geri alabilir ve ardından migrate
ve db:seed
komutlarını tekrar çalıştırarak veritabanını tekrar seed edebilirsiniz.
Öncelikle son migration’ı geri almak için terminalde şu komutu çalıştırın:
php artisan migrate:rollback
Sonra, migration’ları tekrar çalıştırarak tabloları oluşturun:
php artisan migrate
Ve son olarak, seed işlemini tekrar başlatın:
php artisan db:seed
Bu işlemler sayesinde, veritabanındaki verileri geri almış ve yeniden seed etmiş olursunuz.