Sprawdź swoje umiejętności we wszystkich naszych usługach hostingowych i otrzymaj 15% zniżki!

Użyj kodu przy kasie:

Skills
09.12.2024
No categories

Laravel Factories: Budowanie realistycznych danych testowych za pomocą wzorców fabryk Laravel

Fabryki Laravel na AlexHost VPS: Testuj jak profesjonalista

Dlaczego fabryki Laravel na AlexHost? Fabryki Laravel to skrót do generowania realistycznych danych testowych, dzięki czemu tworzenie i testowanie aplikacji jest dziecinnie proste. W połączeniu z hostingiem VPS AlexHost – zdostępem do roota, szybkością SSD i niesamowitym bezpieczeństwem – masz idealny plac zabaw do tworzenia i testowania aplikacji Laravel. Ten przewodnik przeprowadzi Cię przez tworzenie i korzystanie z fabryk, aby szybko przygotować dane testowe, zapewniając gotowość aplikacji do produkcji.

Czym są fabryki w Laravel?

Fabryki w Laravel to klasy, które definiują plan tworzenia instancji modeli. Są one szczególnie przydatne do generowania fałszywych danych testowych lub do zasilania baz danych oryginalnymi danymi. Korzystając z fabryk, można tworzyć pojedyncze lub wiele instancji modeli, każdy z unikalnymi atrybutami.

Fabryki wykorzystują Faker, bibliotekę PHP do generowania fałszywych danych, takich jak nazwiska, adresy, e-maile i inne, aby dane wyglądały realistycznie.

Wymagania wstępne

  • Laravel 9 lub nowszy.
  • Podstawowa znajomość modeli Eloquent i struktury bazy danych Laravel.
  • Połączenie z bazą danych skonfigurowane w pliku .env.

Krok 1: Utwórz fabrykę modeli

W Laravel 8 i nowszych, fabryki są definiowane jako klasy. Nową fabrykę można utworzyć za pomocą polecenia artisan:

php artisan make:factory UserFactory

Spowoduje to utworzenie nowego pliku fabryki w katalogu database/factories o nazwie UserFactory.php.

Krok 2: Zdefiniuj fabrykę

Otwórz plik UserFactory.php znajdujący się w katalogu database/factories:


'email' => $this->faker->unique()->safeEmail,
'email_verified_at' => now(),
'password' => bcrypt('password'), // or Hash::make('password')
'remember_token' => Str::random(10),
];}}

Wyjaśnienie

  • $model: Wskazuje, dla którego modelu Eloquent jest przeznaczona ta fabryka.
  • definition(): Ta metoda zwraca tablicę atrybutów, które definiują model. Używa instancji Faker ($this->faker) do generowania losowych danych dla każdego atrybutu.
  • name: używa faker->name do wygenerowania realistycznej nazwy.
  • email: używa faker->unique()->safeEmail do wygenerowania unikalnego adresu e-mail.
  • password: Ustawia domyślne hasło przy użyciu funkcji bcrypt().
  • remember_token: Generuje losowy ciąg znaków dla pola remember_token.

Ta definicja fabryczna utworzy realistyczne poświadczenia użytkownika z unikalnym adresem e-mail i losowymi nazwami.

Krok 3: Użyj fabryk do tworzenia instancji modelu

Fabryki można używać do tworzenia pojedynczych lub wielu instancji modelu. Oto kilka przykładów:

3.1. Tworzenie pojedynczego użytkownika

Aby utworzyć pojedynczą instancję użytkownika w teście lub seederze, użyj metody create:

$user = \App\Models\User::factory()->create();

Spowoduje to utworzenie użytkownika w bazie danych z atrybutami zdefiniowanymi w fabryce.

3.2. Tworzenie wielu użytkowników

Aby utworzyć wiele instancji użytkowników:

$users = \App\Models\User::factory()->count(10)->create();

Spowoduje to utworzenie 10 rekordów użytkowników w bazie danych.

3.3. Tworzenie instancji bez zapisywania (metoda Make)

Jeśli chcesz utworzyć instancję bez zapisywania jej w bazie danych, użyj metody make:

$user = \App\Models\User::factory()->make();

Spowoduje to utworzenie obiektu modelu użytkownika bez zapisywania go w bazie danych.

Krok 4: Dostosowanie stanów fabrycznych

Stany pozwalają definiować różne wersje fabryki, co może być przydatne do tworzenia użytkowników o różnych rolach lub statusach.

4.1. Zdefiniuj stan

Stany można definiować w klasie fabryki:

public function admin()
{
return $this->state(function (array $attributes) {
return [
'is_admin' => true,
];
});
}

Ten stan administratora może być używany do tworzenia użytkowników z atrybutem is_admin ustawionym na true.

4.2. Używanie stanu

Aby użyć stanu administratora podczas tworzenia użytkowników:

$adminUser = \App\Models\User::factory()->admin()->create();

Spowoduje to utworzenie użytkownika z atrybutem is_admin ustawionym na true.

Krok 5: Używanie fabryk w testach

Fabryki są szczególnie przydatne podczas pisania testów. Pozwalają one na szybkie tworzenie danych testowych i skupienie się na testowanej logice.

5.1. Tworzenie danych testowych w przypadku testowym

Oto przykład użycia fabryki w teście:

public function test_users_can_be_created()
{
$user = \App\Models\User::factory()->create();$this->assertDatabaseHas('users', [
'email' => $user->email,
]);
}

Ten test tworzy użytkownika, a następnie sprawdza, czy istnieje on w tabeli użytkowników z określonym adresem e-mail.

Krok 6: Wypełnienie bazy danych fabrykami

Fabryki mogą być również używane w seedach bazy danych do wypełniania przykładowych tabel danych.

6.1. Tworzenie siewnika

Utwórz siewnik za pomocą polecenia artisan:

php artisan make:seeder UserSeeder

Otwórz plik UserSeeder.php w database/seeders i użyj fabryki do wygenerowania użytkowników:


}
}

Ten siewnik utworzy 50 użytkowników przy użyciu fabryki użytkowników.

6.2. Uruchamianie siewnika

Uruchom siewnik za pomocą:

php artisan db:seed --class=UserSeeder

To polecenie wypełnia tabelę users 50 losowymi rekordami użytkowników.

Krok 7: Używanie połączeń w fabrykach

Jeśli masz modele z powiązaniami, takie jak User i Post, możesz utworzyć fabryki, które tworzą powiązane dane:

7.1. Zdefiniuj połączenia

W PostFactory.php:

public function definition()
{
return [
'user_id' => \App\Models\User::factory(),
'title' => $this->faker->sentence,
'body' => $this->faker->paragraph,
];
}

Ta definicja zapewnia, że gdy tworzony jest post, użytkownik jest automatycznie generowany przy użyciu fabryki użytkowników.

7.2. Tworzenie postu z powiązanym użytkownikiem

$post = \App\Models\Post::factory()->create();

Spowoduje to utworzenie postu z powiązanym użytkownikiem.

Wnioski: Fabryki AlexHost = Testowa Nirwana

Fabryki Laravel sprawiają, że dane testowe są bardzo proste, a VPS AlexHost zapewnia aplikacji Laravel szybkość i kontrolę. Od pojedynczych użytkowników po złożone relacje, fabryki usprawniają testowanie i seedowanie. Wdróż na swoim VPS, uruchom php artisan db:seed i obserwuj, jak Twoja aplikacja ożywa. Potrzebujesz pomocy? AlexHost Ci pomoże – koduj, testuj, podbijaj!

Sprawdź swoje umiejętności we wszystkich naszych usługach hostingowych i otrzymaj 15% zniżki!

Użyj kodu przy kasie:

Skills

Похожие записи не найдены.