Warum gibt Doctrine2 nicht automatisch alle SQL-Bezeichner an?

8

Lehre Handbuch sagt:

  

Die Doktrine zitiert die Identifikatoren nicht automatisch, weil dies dazu führt   zu mehr Problemen, als es lösen würde.

Was genau gibt es Probleme, alles zu zitieren?

    
Vladislav Rastrusny 25.04.2015, 23:07
quelle

1 Antwort

3

Dieses Zitat stammt aus einer älteren Version der Dokumentation, unter Grundlegende Zuordnung Abschnitt. Die neueste Dokumentation enthält diesen Text nicht mehr, aber es ist immer noch wahr .

Die Einschränkungen und bekannte Probleme in der neuesten Dokumentation beleuchtet dies:

  

Aus Kompatibilitätsgründen zwischen allen unterstützten Herstellern und Edge-Case-Problemen führt Doctrine 2 NOT eine automatische Bezeichner-Quotierung durch.

Aufgrund der unterschiedlichen Quoting-Strategien, die in verschiedenen SQL-Anbietern verwendet werden, und der Art und Weise, wie SQL vom ORM generiert wird, ist es ziemlich schwierig, eine Lösung zu finden, die in allen Fällen funktioniert. Und es ist noch schwieriger zu pflegen. Es ist vielleicht nicht unmöglich, aber das Doctrine-Team hat entschieden, dass es die Zeit nicht wert ist, und (vielleicht wichtiger) Code-Komplexität, um es zu versuchen.

Um einen Hinweis darauf zu erhalten, wie komplex die SQL-Generierung ist, durchsuchen Sie den Code im Git-Repository .

Es ist üblich, nur alphanumerische Zeichen (und Unterstriche) für Bezeichner und nicht reservierte Schlüsselwörter zu verwenden. Wenn Sie diesen folgen, brauchen Sie keine Bezeichner für den Bezeichner.

Wenn Sie dies tun müssen, weil Doctrine mit einer Legacy-Datenbank arbeitet, bietet es zwei Lösungen:

  1. Manuelle Zitate von Bezeichnern finden Sie in der Grundlegende Zuordnung Abschnitt.
  2. Erstellen Sie Datenbankansichten, die den bereits erwähnten bewährten Methoden folgen.

PS: Für diejenigen, die nicht wissen: "Bezeichner" bezieht sich nicht auf Primärschlüssel, sondern auf die Namen von Tabellen, Spalten, Indizes usw.

    
Jasper N. Brouwer 28.04.2015 19:34
quelle

Tags und Links