Unterstütze uns mit einem WerbeClick!

Symfony 4.2 Tutorial :: Datenbank-Tabelle anzeigen (CRUD)

Das Ziel

Wir möchten eine einfache Telefonliste anlegen und auf unserer Page anzeigen!





An dieser Stelle empfehlen wir das SQLyog Tool, das man unter http://code.google.com/p/sqlyog/wiki/Downloads herunterladen kann. Es können natürlich auch der phpMyAdmin oder andere MySQL Tools verwendet werden.

1. Tabellenstruktur (Entity Class)

In Symfony werden Tabellen über Entity Klassen erzeugt. Man kann natürlich auch Tabellen von Hand anlegen und diese dann über "reverse engineering" Technik einlesen.

Mit dem nachfolgenden Kommando wird eine neue Datei "PhoneList.php" sowie eine Datei "PhoneListRepository.php" in unserem src Verzeichnis erzeugt!
php bin/console make:entity PhoneList

Wir legen auch gleich die 3 Felder "vorname, nachname und telefon" an. Das ist nicht zwingend erforderlich spart aber jede Menge Arbeit, wenn man im Vorfeld schon weiß welche Felder man in seiner Tabelle haben möchte. Später können neue Felder manuell in der Klasse hinzugefügt werden.
created: src/Entity/PhoneList.php
created: src/Repository/PhoneListRepository.php
 
Entity generated! Now let's add some fields!
You can always add more fields later manually or by re-running this command.


New field name (press <return> to stop adding fields): vorname
Field type [string]:
Field length [255]:
Is nullable [false]:

New field name (press <return> to stop adding fields): nachname
Field type [string]:
Field length [255]:
Is nullable [false]:

New field name (press <return> to stop adding fields): telefon
Field type [string]:
Field length [255]:
Is nullable [false]:

...

neueEntity
 

2. Die Tabelle erzeugen

Jetzt erstellen wir die Tabelle in unserer MySQL Datenbank mit folgendem Kommando:
php bin/console make:migration
 
Folgende Ausgabe sagt uns, dass eine Datei mit den benötigten SQL Befehlen erstellt wurde:
 Next: Review the new migration "src/Migrations/Version20190425080023.php"
 Then: Run the migration with php bin/console doctrine:migrations:migrate
In der Migrations Datei können wir nun auch änderungen vornehmen, welche wir später mit dem Befehl "doctrine:migrations:migrate" einspielen. Mit dem oben genannten Befehl werden die verschiedenen php Dateien in dem Migrations Ordner überprüft und ausgeführt. Es wird allerdings nur ausgeführt, was in der Datenbank in der "migration_versions" Tabelle noch nicht hinterlegt ist.
 
Nachdem wir den obigen Befehl ausgeführt haben, können wir das Resultat in unserem jeweiligen Datenbank Tool einsehen und sollte wie folgt aussehen.
 
database
 
Bei dieser Gelegenheit können wir auch gleich ein paar Testdaten eingeben!
 

3. Die Tabelle anzeigen

Wir benötigen einen so genannten CRUD-Controller! CRUD ist die Abkürzung für Create Read Update und Delete. Der Crud Controller stellt die Verbindung zu unserer Entität dar und gibt die Daten aus der Tabelle an die View weiter.

Mit dem Kommando make:crud erzeugen wir also einen Controller und die entsprechenden Views.
php bin/console make:crud PhoneList

Jetzt sollte die Telefonliste über die URL http://testprojekt.localhost/phone/list aufrufbar sein.
Ist dies nicht der Fall, gehen wir in den PhoneListController im src Ordner. Hier sehen wir überhalb der class eine Route, diese muss aufgerufen werden. Hierbei ist wichtig, wird eine Entity mit Großbuchstaben erstellt, so wie wir es getan haben, wird die Rute automatisch mit "/" unterteilt.
 
Zudem stellen wir fest, dass unser Layout noch nicht mit dem neuen Twig-Views verbunden ist. Das holen wir jetzt gleich nach, indem wir die Dateien in /templates/phone_list/ anpassen.
TIPP:
Die Tabelle auf Class "table" in der View einstellen. Siehe https://getbootstrap.com/docs/3.3/css/#tables

Unterstütze uns mit einem Werbeclick!

Über uns

Wir sind ein agiles Team von Programmierern und haben uns auf Erweiterungen (extensions) für eine Vielzahl von Systemen spezialisiert. Unsere besondere Stärke ist das entwickeln von Erweiterungen für Shop-Systeme basierend auf dem Magento Framework oder die Entwicklung an Web-Anwendungen mit dem Symfony Framework. Eine weitere Stärke ist die Erweiterung von Content Management Systemen wie beispielsweise Wordpress, Typo3, Drupal und Joomla. Das entwickeln von Apps für Android, Windows und Apple OS Systemen ist selbstverständlich!