İçeriğe geç

Laravel Factory – Seeding Nedir ve Kullanımı

Laravel’de veritabanına örnek içerik eklemek için factory ve seed sınıflarından yararlanılır. Öncelikle Factory kavramına değinelim.
Model Factory
Model Factory sınıfları oluşturulacak örnek veri için şablon belirtmiş olursunuz. Örnek bir factory oluşturma;

php artisan make:factory CompanyFactory -m Company //factory e direk modal ekler

database/factories dizinine factory dosyası oluşturulur. Bu dosyanın defination metoduna örnek içerik eklenir;

public function definition()
    {
        return [
            'name' => $this->faker->name, // Laravel faker paketini direk kullanıyor, bir işlem yapmanıza gerek yok
            'email' => $this->faker->unique()->safeEmail,
            'email_verified_at' => now(),
            'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password
            'remember_token' => Str::random(10),
        ];
    }



Bu factory işlemini şu şekilde çalıştırabilirsiniz; 

use App\Models\Company;

Company::factory()->count(50)->create(); // 50 tane örnek içerik üretir.

Seeding
Oluşturulan factory veya ekleyeceğiniz manuel başlangıç verilerini seed kullanarak yönetebilirsiniz. Seed başlangıç veritabanı verilerini ekler. Örnek bir seed dosyası oluşturalım.

php artisan make:seeder CompaniesTableSeeder

Dosya database/seeders dizininde yer alır. Aşağıdaki gibi düzenlenerek veri oluşturulur.

// CompaniesTableSeeder.php
use Illuminate\Database\Seeder;
use App\Company;
class InternetsTableSeeder extends Seeder
{
    public function run()
    {
        $count = 100;
        \App\Models\Company::factory($count)->create();
        //count kaç tane istiyorsak
    }
}

Bu seed dosyasını çalıştırıp verileri eklemek için;

php artisan db:seed
php artisan db:seed --class=UserSeeder // belirli seed dosyası çalıştırma
php artisan migrate:fresh --seed // veri tabanı yeniler ve örnek veriyi ekler.

Tinker kullanarak da factory çalıştırabilirsiniz;

\App\Models\Status::factory(5)->create();
Kategori:DatabaseLaravel

İlk Yorumu Siz Yapın

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.