...
✅ Nowości, motywy, wtyczki WEB i WordPress. Tutaj dzielimy się wskazówkami i najlepszymi rozwiązaniami dla stron internetowych.

Jak wykonać rozsiewanie bazy danych w Laravel?

84

W przeszłości publikowałem artykuł How to Seed Database in PHP using Faker Library. Podczas badania tego tematu odkryłem, że Laravel również używa tej samej biblioteki do zapełniania bazy danych. Ponieważ pisałem artykuł na ten temat dla PHP, postanowiłem napisać również post o seedingu bazy danych Laravel. Dzieje się tak, ponieważ Laravel używa własnego procesu do zapełniania bazy danych.

Co to jest wysiew bazy danych?

Inicjowanie bazy danych oznacza programowe wypełnienie tabel bazy danych danymi testowymi. Dzięki takiemu podejściu można w ciągu kilku minut wprowadzić do bazy tysiące rekordów. Jest to skuteczny sposób, a nie robienie tego ręcznie. Możesz chcieć fikcyjnych danych, aby przetestować twoją aplikację, a umieszczanie bazy danych w programie pozwala zaoszczędzić mnóstwo czasu.

Biblioteka fałszywych

Faker to biblioteka typu open source, która generuje fałszywe dane dla bazy danych aplikacji. Za pomocą Fakera można w kilka minut wstawić tysiące wpisów do bazy danych. Ta biblioteka oszczędza programistom nudne zadanie wprowadzania danych. Możesz uzyskać prawie każdy rodzaj danych, które chcesz. Biblioteka generuje fałszywy e-mail, imię i nazwisko, numer telefonu komórkowego, słowa, zdania, akapity, liczby losowe itp. Możesz przeczytać, jakie dane podają w dokumentacji.

Laravel instaluje tę bibliotekę w swoim rdzeniu. Oznacza to, że nie musisz instalować go osobno. Biorąc to pod uwagę, przyjrzyjmy się, jak wykonać seeding bazy danych w Laravel.

Pierwsze kroki

Aby rozpocząć, mam zamiar utworzyć tabelę „klienci" z nazwami kolumn, adresem e-mail i biografią. Zobaczymy proces rozstawiania pojedynczego stołu. W ten sam sposób użytkownicy mogą umieszczać dowolną liczbę tabel.

Utwórz tabelę migracji dla klientów za pomocą polecenia:

php artisan make:migration create_customers_table

Otwórz plik migracji i dodaj kolumny do metody „w górę”, jak pokazano poniżej.

public function up()
{
    Schema::create('customers', function (Blueprint $table) {
        $table->id();
        $table->string('name');
        $table->string('email');
        $table->text('bio');
        $table->timestamps();
    });
}

Uruchom polecenie migrate, które utworzy tabelę „customers” w Twojej bazie danych.

php artisan migrate

Następnie utwórz model „Klient”, który mapuje się do tabeli „klienci”. Począwszy od Laravel 8.x Twoje modele będą tworzone w katalogu ‘App/Models’. W tym samouczku zakładam, że używasz Laravel 8.x. W starszej wersji Laravela musisz dostosować ścieżkę modelu.

php artisan make:model Customer

Rozsiewanie bazy danych w Laravel

Seeding bazy danych w Laravelu wymaga wykonania kilku kroków, takich jak napisanie seederów, utworzenie fabryki modeli i uruchomienie seederów. Zróbmy to jeden po drugim.

Pisanie siewców

Jeśli spojrzysz na system plików Laravel, zauważysz katalog database/seeders. Wszystkie klasy seed zostaną umieszczone w tym katalogu. Klasa początkowa ma runmetodę, z której można wstawić dane do tabeli.

Utwórz klasę seed CustomerSeeder za pomocą polecenia:

php artisan make:seeder CustomerSeeder

Po wykonaniu tego polecenia powinieneś zobaczyć CustomerSeeder.phpplik utworzony w database/seeders. Otwórz ten plik i do runfunkcji dodaj poniższy kod.

public function run()
{
    AppModelsCustomer::factory()->count(50)->create()->each(function ($customer) {
        $customer->save();
    });
}

Tu dzwonię do Fabryki Klienta, którą stworzymy w następnym kroku. Zauważ, że przekazałem wartość 50 do metody ‘count’. Oznacza to, że w tabeli „klienci” należy umieścić 50 wierszy. Dostosuj tę wartość, jak chcesz.

Tworzenie fabryk

Kod, który napisałem, CustomerSeederbędzie szukał fabryki, aby uzyskać dane testowe. Oznacza to, że musimy stworzyć modelową fabrykę. Nadaję nazwę fabryce jako CustomerFactory. Uruchom polecenie, aby wygenerować fabrykę modeli.

php artisan make:factory CustomerFactory --model=Customer

To polecenie utworzy CustomerFactory.phpwewnątrz database/factorieskatalogu. Otwórz ten plik i do metody definicji wygeneruj dane testowe w następujący sposób.

public function definition()
{
    return [
        'name' => $this->faker->name,
        'email' => $this->faker->unique()->safeEmail,
        'bio' => $this->faker->text,
    ];
}

Powyższa tablica zwraca losowo wybraną nazwę, adres e-mail i tekst biografii.

Siewniki biegające

Wszyscy ustawiamy się z siewnikiem i fabryką. Teraz uruchom nasz siewnik za pomocą poniższego polecenia.

php artisan db:seed --class=CustomerSeeder

Sprawdź tabelę „klienci” i powinna zawierać 50 fikcyjnych wpisów.

Powyższe polecenie uruchamia pojedynczy seeder, który przekazaliśmy jawnie. Załóżmy, że chcesz utworzyć wiele seederów i uruchomić je wszystkie za pomocą jednego polecenia. W takich przypadkach powinieneś zadzwonić do seederów z tego, DatabaseSeederktóry znajduje się w tym samym katalogu database/seeders.

public function run()
    {
        $this->call(CustomerSeeder::class);
        // call as many seeders you wish
    }

Użytkownik może utworzyć dowolną liczbę seederów zgodnie ze swoimi wymaganiami i wywołać je z tej runmetody.

Na koniec uruchom seedery za pomocą poniższego polecenia.

php artisan db:seed

Wywoła wszystkie seedery z runmetody i wykona ją.

Mam nadzieję, że rozumiesz temat seedowania bazy danych w Laravel. Chciałbym usłyszeć wasze przemyślenia i sugestie w sekcji komentarzy poniżej.

Powiązane artykuły

Źródło nagrywania: artisansweb.net

Ta strona korzysta z plików cookie, aby poprawić Twoje wrażenia. Zakładamy, że nie masz nic przeciwko, ale możesz zrezygnować, jeśli chcesz. Akceptuję Więcej szczegółów