Ich beschäftige mich gerade mit Frameworks. Bis jetzt habe ich noch keines verwendet und möchte nun ein bestehendes Projekt mit einem Framework neu aufsetzen. Nach einiger Recherche bin ich nun bei Symfony gelandet. Ich denke damit werde ich klar kommen. Was mich aber stört ist - und das ist auch bei anderen Frameworks so - dass immer ein ORM mitgeliefert wird, welches sehr stark im System integriert ist. Im aktuellen Projekt habe ich viel Module mit DB-Mappern die eine PDO-Instanz verlangen. Nun möchte ich diese weiter verwenden und nicht neu schreiben. Bei all meinen Recherchen habe ich aber nicht herausgefunden, wie ich in Symfony PDO anstelle von Doctrine verwenden kann. Gibt es eine Möglichkeit einer Klasse eine PDO-Instanz zu übergeben?
Ankündigung
Einklappen
Keine Ankündigung bisher.
Wie verwende ich PDO?
Einklappen
Neue Werbung 2019
Einklappen
X
-
Bei all meinen Recherchen habe ich aber nicht herausgefunden, wie ich in Symfony PDO anstelle von Doctrine verwenden kann.
aber es gibt auch ein Database abstration Layer DBAL von doctrine.
https://www.doctrine-project.org/pro...est/index.html
-
Du kannst PDO einfach verwenden in Symfony. Definiere dir deine PDO Instanz in der service.yaml und schon kannst du sie überall injection.
Ich würde mir an deiner Stelle aber überlegen, wenn du schon ein Framework verwendest, auch direkt zu lernen wie man mit einem ORM arbeitet. Dies hat sehr viele Vorteile.
Kommentar
-
tomBuilder Das werde ich mir anschauen. Danke.
Zeichen32 Das mag schon sein. Ich sehe einfach lieber die SQL Abfrage in SQL vor mir als die Methodenaufrufe des ORM. SQL ist für mich einfacher zu lesen und bei Problemen die entsprechende Stelle zu finden.
Kommentar
-
Zitat von magpie Beitrag anzeigenIch sehe, da gibt es noch viel zu lernen
Und spätestens nach einer Stunde damit, willst du eh nichts mehr mit Raw SQL zu tun haben.
Mit dem neuen Symfony Flex ist halt nichts mehr standardmäßig enthalten, daher muss man erst einmal wissen dass es überhaupt einen Profiler gibt (https://symfony.com/doc/current/profiler.html).
Kommentar
-
Zitat von sboesch Beitrag anzeigen
Geht so, fand Doctrine recht einfach zu lernen.
Und spätestens nach einer Stunde damit, willst du eh nichts mehr mit Raw SQL zu tun haben.
Mit dem neuen Symfony Flex ist halt nichts mehr standardmäßig enthalten, daher muss man erst einmal wissen dass es überhaupt einen Profiler gibt (https://symfony.com/doc/current/profiler.html).
Kommentar
-
Zitat von Zeichen32 Beitrag anzeigen
Kommt immer auf das Setup an welches man wählt. In der Slim Variante ist in der Tat nichts dabei, nimmt man aber das "Full Package" sind wie früher alle Abhängigkeiten dabei. Dafür führt man nur symfony --full ProjectName zu Beginn des Projektes aus.
"symfony new symfony", welches zuerst das "Full Package" erstellt hatte, erstellt jetzt nur noch das "Slim Package".
Kommentar
-
Zitat von sboesch Beitrag anzeigenUnd spätestens nach einer Stunde damit, willst du eh nichts mehr mit Raw SQL zu tun haben.
Wenn man schon Doctrine am laufen hat, kann man sich auch die PDO Instanz holen mit
PHP-Code:$pdo = $entityManager->getConnection()->getWrappedConnection();
sorry, shift-taste kaputt
Kommentar
-
Zitat von Meister1900 Beitrag anzeigen
Es sein denn, du willst recht komplexe Abfragen damit realisieren. Aber da stößt man wahrscheinlich mit jedem DBAL an Grenzen.
Wenn man schon Doctrine am laufen hat, kann man sich auch die PDO Instanz holen mit
PHP-Code:$pdo = $entityManager->getConnection()->getWrappedConnection();
Kommentar
-
Zuletzt geändert von Meister1900; 15.10.2019, 12:01.Zitat von Zeichen32 Beitrag anzeigenBesser ist es in diesem Fall, sollte man wirklich an die Grenzen von DQL gelangt sein, eine kleine Extension zu verwenden.
Siehe z.B. hier https://github.com/beberlei/DoctrineExtensions
Oder welche Art Extension meinst du?
Meinte mit komplex aber auch eher so was wie "Joine mir den Betreff der letzten Notiz auf ein Ticket und wenn es keine Notiz gibt, den Betreff der letzt E-Mail". Das ist mit SQL schon nicht sooo trivial, aber mit DQL breche ich mir da die Fingersorry, shift-taste kaputt
Kommentar
-
Zitat von Meister1900 Beitrag anzeigenIn wie fern ist die Extension denn nicht abhängig von einer bestimmten Datenbank? Letztlich gibst du in der Extension mit getSQL() doch auch wieder spezifisches SQL zurück.
https://github.com/beberlei/Doctrine...ster/src/Query
Kommentar
Kommentar