Ankündigung

Einklappen
Keine Ankündigung bisher.

Wie verwende ich PDO?

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Symfony] Wie verwende ich PDO?

    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?

  • #2
    Bei all meinen Recherchen habe ich aber nicht herausgefunden, wie ich in Symfony PDO anstelle von Doctrine verwenden kann.
    Ich weiss nicht was dagegen spricht, einfach den PDO Service Provider zu übergeben und daran weiterzuarbeiten.
    aber es gibt auch ein Database abstration Layer DBAL von doctrine.
    https://www.doctrine-project.org/pro...est/index.html

    Kommentar


    • #3
      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


      • #4
        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


        • #5
          Die entsprechenden SQL Abfragen lassen sich in der Dev-Toolbox anschauen.

          Kommentar


          • #6
            Ich sehe, da gibt es noch viel zu lernen

            Kommentar


            • #7
              Zitat von magpie Beitrag anzeigen
              Ich sehe, da gibt es noch viel zu lernen
              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


              • #8
                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).
                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.

                Kommentar


                • #9
                  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.
                  Ja, wollte ich nur erwähnen, da ich das beim Umstieg von SF3 auf 4 nicht mitbekommen habe.
                  "symfony new symfony", welches zuerst das "Full Package" erstellt hatte, erstellt jetzt nur noch das "Slim Package".

                  Kommentar


                  • #10
                    Zitat von sboesch Beitrag anzeigen
                    Und spätestens nach einer Stunde damit, willst du eh nichts mehr mit Raw SQL zu tun haben.
                    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(); 
                    sorry, shift-taste kaputt

                    Kommentar


                    • #11
                      Ah super! So kann ich mit beidem parallel arbeiten und ausprobieren.

                      Kommentar


                      • #12
                        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(); 
                        Damit nimmt man sich aber komplett die Möglichkeit unabhängig einer speziellen Datenbank zu sein. Besser ist es in diesem Fall, sollte man wirklich an die Grenzen von DQL gelangt sein, eine kleine Extension zu verwenden.

                        Kommentar


                        • #13
                          Zitat von Zeichen32 Beitrag anzeigen
                          Besser ist es in diesem Fall, sollte man wirklich an die Grenzen von DQL gelangt sein, eine kleine Extension zu verwenden.
                          In 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.
                          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 Finger
                          sorry, shift-taste kaputt

                          Kommentar


                          • #14
                            Zitat von Meister1900 Beitrag anzeigen
                            In 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.
                            Wie in deinem Beispiel gezeigt, kannst du mithilfe der Extension ein DQL Befehl für verschiedene Datenbanken bereitstellen. So musst du Änderungen bei einer Umstellung nur an einer Stelle machen und nicht bei jeder Query:
                            https://github.com/beberlei/Doctrine...ster/src/Query

                            Kommentar

                            Lädt...
                            X