Mikail.Net

Yazılımcı günlüğü

Nova Seeder

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.