Sprytne Okazje — promocje, kody rabatowe i wyprzedaże

Generator modelu Laravel

Klasa modelu Eloquent

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ć model Eloquent.

Oceń to narzędzie:

Powiązane narzędzia

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

Generator modelu Eloquent

Modele w Laravelu reprezentują tabele bazy danych i ułatwiają pracę z rekordami jak z obiektami. Klasa modelu definiuje m.in. które pola można masowo przypisywać.

Najważniejsze właściwości

WłaściwośćRola
$fillablepola dozwolone w mass assignment
$castsautomatyczna konwersja typów
$tablenazwa tabeli, gdy różni się od domyślnej
SoftDeletesmiękkie usuwanie (kolumna deleted_at)

Przykład

Model Product z fillable name, slug, price i casts price => decimal:2 automatycznie konwertuje cenę na liczbę z dwoma miejscami po przecinku.

Dlaczego fillable?

Bez białej listy ktoś mógłby przez formularz ustawić pole is_admin. $fillable ogranicza mass assignment do bezpiecznych pól. Alternatywa to $guarded.

Jak działa generator modelu Eloquent?

Generator modelu Eloquent to narzędzie, które na podstawie prostego formularza tworzy szkielet klasy modelu dla frameworka Laravel. Nie wymaga połączenia z bazą danych ani uruchamiania aplikacji. Działanie sprowadza się do przetworzenia danych wejściowych: nazwy klasy, listy pól, ich typów oraz dodatkowych opcji, takich jak SoftDeletes czy własna nazwa tabeli. Wynikiem jest gotowy fragment kodu PHP, który możesz wkleić do pliku modelu.

Kluczowym elementem jest konwencja nazewnictwa Laravela. Generator automatycznie wyznacza domyślną nazwę tabeli na podstawie nazwy klasy. Stosuje przy tym dwie reguły: liczbę mnogą oraz zapis snake_case. Dla modelu Product otrzymasz tabelę products. Jeśli jednak twoja tabela ma inną nazwę, możesz ją podać ręcznie — wtedy narzędzie doda właściwość $table z odpowiednią wartością.

Drugi mechanizm dotyczy mass assignment. Pola, które zaznaczysz jako dozwolone, trafiają do tablicy $fillable. To bezpieczniejsza alternatywa dla $guarded, ponieważ jawnie określasz, co może być przypisane masowo. Generator nie zgaduje — jeśli pominiesz pole, nie znajdzie się ono w $fillable, co chroni przed nieautoryzowaną zmianą np. is_admin.

Trzeci mechanizm to casty. Dla każdego pola możesz wybrać typ konwersji, np. decimal:2, boolean, integer, array, datetime. Narzędzie zamienia te wybory na wpisy w tablicy $casts. Dzięki temu Eloquent będzie zwracał wartości w oczekiwanym typie, a nie jako stringi. Generator nie weryfikuje, czy wybrany cast jest zgodny z rzeczywistą kolumną w bazie — to odpowiedzialność programisty.

Przykład krok po kroku: model Product

  1. W polu nazwy klasy wpisujesz Product. Generator od razu wylicza domyślną nazwę tabeli: products, stosując liczbę mnogą i snake_case.
  2. Dodajesz trzy pola, które mają być mass assignable: name (string), slug (string) oraz price (decimal). Zaznaczasz je jako fillable. W tym momencie liczba pól w $fillable wynosi 3.
  3. Dla pola price wybierasz cast decimal:2. To jeden wpis w tablicy $casts. Oznacza to, że cena będzie konwertowana na liczbę z dwoma miejscami po przecinku.
  4. Włączasz opcję SoftDeletes. Generator doda trait SoftDeletes oraz obsługę kolumny deleted_at. Dzięki temu rekordy nie będą fizycznie usuwane, a jedynie oznaczane znacznikiem czasu.
  5. Sprawdzasz wygenerowany kod. Klasa Product ma 3 elementy w $fillable, 1 element w $casts oraz 1 trait SoftDeletes. Nazwa tabeli to products.
  6. Wynik: model Product z fillable name, slug, price; casts price => decimal:2; tabela products; SoftDeletes aktywny. Całość możesz wkleić do pliku app/Models/Product.php.

Właściwości modelu Eloquent — ściąga

WłaściwośćRolaPrzykład
$fillableBiała lista pól dozwolonych w mass assignmentprotected $fillable = ['name', 'slug', 'price'];
$castsAutomatyczna konwersja typów przy odczycie i zapisieprotected $casts = ['price' => 'decimal:2'];
$tableNazwa tabeli, gdy różni się od domyślnejprotected $table = 'products';
SoftDeletesMiękkie usuwanie — znacznik czasu w deleted_atuse SoftDeletes;
$guardedCzarna lista pól wykluczonych z mass assignmentprotected $guarded = ['is_admin'];
deleted_atKolumna używana przez SoftDeletestimestamp nullable

Praktyczne wskazówki

  • Preferuj $fillable zamiast $guarded — jawna biała lista jest bezpieczniejsza, ponieważ nie musisz pamiętać o każdym nowym polu, które pojawi się w formularzu. Jeśli używasz $guarded, każde nowe pole domyślnie staje się podatne na mass assignment. W generatorze zaznaczasz tylko te pola, które faktycznie mają być przypisywane masowo.
  • Ustawiaj casts dla typów natywnych — decimal, boolean, integer, array oraz datetime to najczęstsze przypadki. Bez castów Eloquent zwraca wartości jako stringi, co prowadzi do błędów przy porównaniach i obliczeniach. Generator pozwala wybrać odpowiedni cast dla każdego pola.
  • Nadpisuj $table tylko w razie potrzeby — domyślna konwencja Laravela (liczba mnoga snake_case) działa dobrze, gdy nazwy są regularne. Jeśli jednak tabela ma nietypową nazwę, np. ze względu na dziedzictwo systemu, podaj ją ręcznie. W przeciwnym razie Eloquent będzie szukał złej tabeli.
  • Włączaj SoftDeletes świadomie — to wygodne rozwiązanie, gdy chcesz mieć możliwość przywrócenia rekordu. Pamiętaj jednak, że zapytania domyślnie pomijają usunięte rekordy, a kolumna deleted_at musi istnieć w migracji. Generator nie tworzy migracji, więc musisz dodać ją samodzielnie.
  • Nie traktuj generatora jako walidacji — narzędzie nie sprawdza, czy typy pól zgadzają się z rzeczywistą bazą ani czy nazwy są poprawne. To tylko szkielet. Walidację danych wejściowych i zgodność schematu weryfikujesz w migracjach oraz formularzach.

Ograniczenia narzędzia

  • Brak relacji — generator nie tworzy metod hasMany, belongsTo, belongsToMany ani innych relacji Eloquent. Jeśli twój model ma powiązania z innymi tabelami, musisz dopisać je ręcznie.
  • Brak migracji — narzędzie nie wygeneruje pliku migracji ani nie zmodyfikuje schematu bazy danych. Otrzymujesz wyłącznie kod modelu, a strukturę tabeli musisz przygotować osobno.
  • Brak walidacji i reguł — nie doda reguł walidacji, accessorów, mutatorów, observerów ani globalnych scope'ów. To wszystko wykracza poza zakres prostego generatora szkieletu.
  • Brak introspekcji bazy — narzędzie nie łączy się z bazą danych, więc nie wykryje rzeczywistych kolumn ani ich typów. Wszystko, co podasz, jest traktowane jako deklaracja, a nie weryfikowana.

Najczęstsze pytania

Jaka jest domyślna nazwa tabeli?

Laravel tworzy ją z nazwy klasy w liczbie mnogiej i snake_case — model Product użyje tabeli products.

Co to SoftDeletes?

Zamiast fizycznie usuwać rekord, ustawia znacznik czasu w kolumnie deleted_at. Dane można przywrócić.

Po co casts?

Zapewniają spójne typy: boolean, integer, array (JSON), datetime, decimal. Bez nich pola wracają jako stringi.

Jak wygenerować model Eloquent w Laravel?

Wpisz nazwę klasy, zaznacz pola, które mają być w $fillable, ustaw casts i opcjonalnie SoftDeletes. Generator zwróci gotowy kod PHP do wklejenia w pliku modelu. Nie musisz ręcznie pisać tablic ani traitów.

Czy generator obsługuje SoftDeletes?

Tak. Po włączeniu opcji narzędzie doda trait SoftDeletes oraz uwzględni kolumnę deleted_at. Pamiętaj, że musisz samodzielnie dodać tę kolumnę w migracji.

Jak ustawić casts dla decimal w Laravel?

W tablicy $casts wpisz 'price' => 'decimal:2'. To automatycznie skonwertuje wartość na liczbę z dwoma miejscami po przecinku. Generator pozwala wybrać ten cast z listy.

Jaka jest domyślna nazwa tabeli dla modelu Product?

Laravel tworzy nazwę tabeli z nazwy klasy w liczbie mnogiej i snake_case. Dla modelu Product będzie to tabela products. Jeśli chcesz użyć innej nazwy, podaj ją w opcjach generatora.

Czy $fillable i $guarded można stosować razem?

Technicznie można, ale nie jest to zalecane. Lepiej wybrać jedną strategię: albo białą listę $fillable, albo czarną listę $guarded. Generator domyślnie używa $fillable.

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