Może zdarzyć się, że zaczniesz pracę nad istniejącym projektem, który korzysta z bazy danych. Model jest gotowy, tabele wypełnione danymi, a Ty musisz przygotować CRUDa w frameworku Symfony 🙂 . Na szczęście Doctrine udostępnia magiczne polecenie, które potrafi wygenerować klasy modelu z istniejącej bazy danych.

Dla przykładu wygenerujemy model, a potem CRUDa dla dwóch relacyjnych tabel: user i user_details powiązanych kluczem obcym user_id. Pierwsza tabela przechowuje informacje o użytkowniku i zawiera podstawowe dane, takie jak: id, username i password; a druga – dane personalne, m.in.: firstname, lastname, email

Zakładam, że masz utworzoną bazę danych i skonfigurowane dostępy w pliku .env. Jeśli tak, to zaczniemy od utworzenia tabel za pomocą polecenia SQL:

Jeśli tabele zostały utworzone prawidłowo, to wygeneruj modele z konsoli wiersza poleceń:

W katalogu src/Entity powinieneś mieć zapisane dwie nowe klasy, a oto ich zawartość:

src/Entity/User.php:

src/Entity/UserDetails.php:

Jak widać, brakuje nam w klasach tzw. „metod dostępowych”: setterów i getterów, ale możemy je wygenerować również w prosty sposób:

Kiedy otworzysz źródło, zobaczysz, że pliki obu klas zostały zaktualizowane o brakujące metody:

W klasie User.php musimy jeszcze dopisać magiczną funkcję PHP: __toString(), która potrafi przekonwertować każdy obiekt na ciąg tekstowy. W naszym przykładzie musimy to zrobić dla nazwy użytkownika: username. Symfony niestety nie zrobi za nas wszystkiego 🙂 

Na koniec wygenerujmy CRUDa dla klas User i UserDetails:

Polecenie stworzy prymitywny system do zarządzania użytkownikami.

I to wszystko, testuj i do następnego –>