Загрузка...

В чем разница между Factory и Seeder в Laravel?

laravel cover

И Factory, и Seeder используются для создания данных тестирования для вашего приложения. Но есть некоторые различия:

Factory

Используя фабрики, вы можете легко создавать тестовые данные для вашего приложения Laravel на основе вашей модели. В Factory мы используем другие классы или библиотеки, которые позволяют fzaninotto/faker легко генерировать поддельные данные.

В Factory мы также можем генерировать данные, связанные с отношениями, тогда как в DB Seeder мы не можем этого сделать.

// generating data based on model
factory(App\User::class, 50)->create()->each(function ($user) {
        $user->posts()->save(factory(App\Post::class)->make());
});

Или другой пример:

use Illuminate\Support\Str;
use Faker\Generator as Faker;

// generating data using Faker
$factory->define(App\User::class, function (Faker $faker) {
    return [
        'name' => $faker->name,
        'email' => $faker->unique()->safeEmail,
        'email_verified_at' => now(),
        'password' => '$2y$10$TKh8H1.PfQx37YgCzwiKb.KjNyWgaHb9cbcoQgdIVFlYg7B77UdFm', // secret
        'remember_token' => Str::random(10),
    ];
});

Seeder

Laravel включает возможность заполнять вашу базу данных данными, используя начальные классы. Все начальные классы хранятся в  database/seeders каталоге. По умолчанию  DatabaseSeeder для вас определен класс. Из этого класса вы можете использовать  call метод для запуска других начальных классов, что позволяет вам контролировать порядок заполнения.

use Illuminate\Support\Str;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
use App\Models\User;

class DatabaseSeeder extends Seeder
{
    public function run(){
            User::factory()
                    ->count(50)
                    ->hasPosts(1)
                    ->create();
        }
}

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *