2015-04-25 17 views

risposta

3

Questa citazione proviene da una versione precedente della documentazione, nella sezione Basic Mapping. L'ultima documentazione non include più questo testo, ma è ancora vero.

La sezione Limitations and Known Issues della documentazione più recente getta un po 'di luce su questo:

Per motivi di compatibilità tra tutti i fornitori supportati e casi di problemi di bordo Dottrina 2 non NON Do identificatore automatica citando.

A causa delle diverse strategie di quotazione utilizzati in diversi fornitori di SQL, e il modo in cui SQL è generato dal ORM, è abbastanza difficile trovare una soluzione che funziona per tutti i casi. Ed è ancora più difficile da mantenere. Potrebbe non essere impossibile, ma il team di Doctrine ha deciso che non valeva la pena di provare il tempo e (forse più importante) la complessità del codice.

Per un suggerimento su come è complessa la generazione SQL, sfogliare il codice nello git repository.

È prassi comune utilizzare solo caratteri alfanumerici (e caratteri di sottolineatura) per gli identificatori e a non utilizzare parole chiave riservate. Se li segui, non ti servirà la citazione dell'identificatore.

Se si ha bisogno di, perché il vostro fare con un database legacy, Doctrine offre 2 soluzioni:

  1. Manuale citando di identificatori, vedere la sezione Basic Mapping.
  2. Creare visualizzazioni di database che seguano le migliori pratiche menzionate in precedenza.

PS: Per coloro che non conoscono: "identificatore" fa non si riferiscono a chiavi primarie, ma per i nomi di tabelle, colonne, indici, ecc

+0

Grazie per una risposta, ma in realtà non ha risposto alla mia domanda principale. Puoi darmi un esempio di quanto siano complessi identificatori di quoting? Ho sempre pensato che fosse semplice come "prendi l'identificatore di tipo X" (x = tabella, colonna, nome del database ecc.) E "applica la strategia di quotatura Q (X) ad esso" (di solito si tratta solo di una sorta di virgolette) . Non è così? –

+0

Penso che tu possa vederlo in questo modo: immagina di creare il sistema che proponi, supportando tutti i fornitori di DB che supporta Doctrine. Ora immagina di integrare quel sistema in Doctrine. Prova a stimare il tempo e le risorse necessarie. Vale la pena guadagnare dal fatto di averlo? –

+0

BTW, il motivo principale per cui tale affermazione è contenuta nella documentazione è perché non molto tempo fa c'era una discussione ben pubblicata: la maggior parte degli ORM e lo stato simile sono sicuri dall'iniezione SQL a causa del quoting. Ma la maggior parte solo valori di citazione, non identificatori. Questo è stato trovato fuorviante. Così molti ORM hanno aggiornato la loro documentazione per menzionare espressamente che non citano identificatori. –

Problemi correlati