Sprytne Okazje — promocje, kody rabatowe i wyprzedaże

Generator Laravel Seeder

Wypełnij bazę danymi testowymi

Bezpieczne (SSL)
Przetwarzanie Lokalne
100% Darmowe
Instrukcja
  • 1
    Wprowadź dane
    Wpisz treść, wklej tekst lub załaduj plik z dysku.
  • 2
    Kliknij przycisk
    Narzędzie natychmiast przetworzy Twoje dane w przeglądarce.
  • 3
    Pobierz wynik
    Skopiuj gotowy tekst lub zapisz plik na urządzeniu.
function runTool() {
  return "Wynik gotowy w 0.1s";
}
Uzupełnij dane, aby wygenerować klasę seedera.

Oceń to narzędzie:

Powiązane narzędzia

Inne narzędzia, które mogą Ci się przydać

Generator seedera Laravel

Seedery wypełniają bazę danych przykładowymi lub startowymi danymi. Razem z migracjami pozwalają odtworzyć środowisko jednym poleceniem.

Fabryka czy tabela?

PodejścieKiedy stosować
Model::factory()gdy masz zdefiniowaną fabrykę — generuje realistyczne dane
DB::table()proste, stałe dane startowe (np. słowniki, role)

Przykład (fabryka)

User::factory()->count(10)->create();

Tworzy 10 użytkowników z danymi z fabryki. Wymaga klasy database/factories/UserFactory.php.

Uruchamianie

  • php artisan db:seed — uruchamia główny DatabaseSeeder.
  • php artisan db:seed --class=UserSeeder — konkretny seeder.
  • php artisan migrate:fresh --seed — przebudowa bazy z danymi.

Jak działa generator seedera Laravel

Narzędzie nie łączy się z twoją bazą i nie czyta plików migracji. Schemat opisujesz ręcznie w formularzu: nazwa modelu lub tabeli, lista kolumn wraz z typami, liczba rekordów oraz tryb zapisu. Na tej podstawie powstaje kompletny kod klasy seedera, który kopiujesz do projektu. To celowe uproszczenie — dzięki temu generator działa tak samo dla świeżej aplikacji, jak i dla projektu, w którym migracje są rozproszone albo nadpisane.

Wygenerowany plik trafia do katalogu database/seeders, a klasa dziedziczy po Illuminate\Database\Seeder i implementuje metodę run(). W środku znajduje się albo tablica wierszy przekazywana do DB::table(...)->insert(), albo wywołanie Model::factory() z podaną liczbą rekordów. Pierwszy wariant daje dane stałe i powtarzalne, drugi losowe, zależne od tego, co zwraca fabryka. Tryb zmienia więc tylko treść metody run(), a nie strukturę pliku ani sposób jego uruchamiania.

Najważniejsza część pracy to zamiana typów kolumn na konkretne wartości. Typ tekstowy staje się ciągiem znaków, liczba całkowita liczbą bez części ułamkowej, decimal kwotą zapisaną tekstowo, boolean wartością prawda lub fałsz, a data datą w formacie akceptowanym przez bazę. Kolumna klucza obcego to zwykła liczba, więc generator nie sprawdza, czy wskazany rekord istnieje w powiązanej tabeli — to już twoja odpowiedzialność. Narzędzie nie ma wbudowanych list wartości ani słowników, więc wszystkie dane, które mają być stałe, wpisujesz samodzielnie.

Przykład: seeder dla tabeli products krok po kroku

  1. Nazwa modelu: Product, tabela products. Tę nazwę wpisujesz w pierwsze pole formularza — od niej zależy nazwa klasy i pliku.
  2. Kolumny: name (string), price (decimal), stock (integer), is_active (boolean). Cztery kolumny poza kluczem głównym, który doda baza.
  3. Liczba rekordów: 10. Tyle wierszy ma znaleźć się w wygenerowanym seedzie.
  4. Tryb zapisu: DB::table, czyli stałe dane bez odwołania do fabryki.
  5. Wynik działania narzędzia: plik database/seeders/ProductSeeder.php z metodą run(). W tablicy znajdzie się 10 wierszy, każdy po 4 wartości, co daje 40 wartości do wypełnienia.
  6. Uruchomienie: kopiujesz plik do projektu, dopisujesz wywołanie klasy w DatabaseSeeder i odpalasz seeder. Kontrola poprawności: zapytanie SELECT COUNT(*) FROM products zwraca 10.

Typy kolumn i wartości, które trafiają do seedera

Typ kolumnyCo generuje narzędzieNa co uważać
stringkrótki ciąg znaków, wartość własna albo losowadopasuj długość do limitu ustawionego w migracji
textdłuższy ciąg znaków, również wielolinijkowynie wstawiaj tu danych, które mają być unikalne
integer, bigIntegerliczba całkowita bez części ułamkowejzakres musi mieścić się w typie kolumny
decimalkwota lub wartość z ustaloną liczbą miejsc po przecinkuw PHP bezpieczniej trzymać ją jako ciąg znaków niż jako float
booleanprawda albo fałszw wielu bazach zapisuje się jako 0 lub 1
date, dateTimedata lub znacznik czasuformat musi być zgodny z kolumną, inaczej insert się nie wykona
foreignIdliczba wskazująca rekord z innej tabeligenerator nie sprawdza, czy taki rekord istnieje
enumjedna z wartości zdefiniowanych w migracjilisty wartości nie ma w generatorze, trzeba ją podać ręcznie

Praktyczne wskazówki przed uruchomieniem seedera

  • Jeden seeder na jedną tabelę — osobne klasy łatwiej uruchamiać pojedynczo i łatwiej wyłapać, który plik psuje dane, gdy coś pójdzie nie tak.
  • Zadbaj o powtarzalność — przed wstawieniem wyczyść tabelę metodą truncate lub delete, albo zamiast insertu użyj updateOrCreate. Bez tego drugie uruchomienie seedera zdubluje wiersze.
  • Wstawiaj partiami — przy dużej liczbie rekordów dziel zapis na porcje, żeby nie przekroczyć limitu zapytania i nie trzymać w pamięci ogromnej tablicy.
  • Nie wpisuj kluczy obcych na sztywno — pobieraj identyfikatory z bazy zapytaniem o konkretny rekord zamiast zakładać, że klucz główny będzie miał określoną wartość.
  • Pilnuj kolejności wywołań — tabele słownikowe i nadrzędne ładuj przed tymi, które się do nich odwołują, inaczej insert zatrzyma się na ograniczeniu klucza obcego.

Czego generator nie zrobi za ciebie

  • Nie zna twojego schematu — nie czyta migracji ani bazy, więc literówka w nazwie kolumny albo zły typ przejdzie prosto do wygenerowanego kodu i ujawni się dopiero przy uruchomieniu.
  • Nie tworzy spójnych relacji — dane w powiązanych tabelach nie są uzgadniane między sobą, a klucze obce to liczby bez gwarancji, że wskazany rekord istnieje.
  • Nie waliduje reguł bazy — unikalność, limity długości, wartości enum i ograniczenia check nie są sprawdzane, błąd wróci z silnika bazy dopiero podczas seedowania.
  • Nie generuje fabryk — w trybie opartym na fabryce klasa fabryki musi już istnieć w projekcie, narzędzie jedynie odwołuje się do niej w metodzie run().

Najczęstsze pytania

Czy seedery usuwa dane?

Nie same z siebie. Jeśli chcesz wyczyścić tabelę, wywołaj Model::truncate() lub DB::table(...)->delete() przed wstawieniem.

Czy można używać na produkcji?

Tylko z rozwagą i dla danych słownikowych. Danych testowych nie wstawiaj na produkcję.

Jak objąć seeder transakcją?

Wystarczy uruchomić go wewnątrz DB::transaction(), aby w razie błędu wycofać wszystkie zmiany.

Czym różni się generator seedera od fabryki w Laravel?

Seeder wypełnia bazę danymi, a fabryka opisuje sposób tworzenia pojedynczego modelu. Generator tworzy plik seedera, natomiast w trybie fabryki jedynie odwołuje się do istniejącej klasy fabryki, której sam nie wygeneruje.

Czy wygenerowany seeder sam wyczyści tabelę przed wstawieniem danych?

Nie. Kod wstawia dane dokładnie tak, jak został wygenerowany. Jeśli chcesz uniknąć duplikatów, dopisz truncate lub delete przed insertem albo zamień insert na updateOrCreate.

Jak wstawić dane tylko wtedy, gdy tabela jest pusta?

Sprawdź na początku metody run() liczbę rekordów i przerwij działanie, gdy tabela nie jest pusta. Dzięki temu seeder można bezpiecznie uruchamiać wielokrotnie, także w skryptach wdrożeniowych.

Czy generator obsługuje wiele tabel naraz?

Nie, jeden przebieg to jedna klasa seedera dla jednej tabeli. Dla kilku tabel generujesz osobne pliki i wywołujesz je po kolei w DatabaseSeeder, pamiętając o kolejności przy kluczach obcych.

Czy dane z seedera można wstawiać na produkcję?

Tylko dane słownikowe i startowe, takie jak role, statusy czy kategorie. Danych testowych nie wstawiaj na produkcję, bo zaburzą statystyki i mogą pojawić się w interfejsie użytkownika.

Zainstaluj Webp.pl Miej narzędzia we własnej kieszeni!