2016-10-25 2 views
1

Ich habe einige Probleme mit einer Anfrage mit Doctrine.Insensitive auf Verbindungen Name mit Großbuchstaben

Ich mache eine findOneByFieldName auf meiner Entität, die mir ein Objekt abrufen soll.

Ich möchte findOneByNameSurname (NameSurname ist ein String) mit einem Parameter, der zum Beispiel enthält 'BEART Jean-Francois'.

Was ich will, ist, dass Lehre ruft mich den Benutzer BEART Jean-Francois, wenn auch nur BEART Jean-Francois in der Tabelle vorhanden. Dennoch, wenn ich der Doktrin 'BEART Jean-Francois' mit einem f Kleinbuchstaben gebe, ruft mich die Doktrin immer noch den Benutzer ab, der das 'BEART Jean-Francois' Feld mit dem F Großbuchstaben hält.

Was ich will ist, dass Doktrin sollte empfindlich mit der ganzen Zeichenfolge, ich meine, dass es nicht den doppelten Namen squizze, auch wenn, im Grunde ist es nicht ein doppelter Name wie es anders geschrieben wird (Großbuchstabe auf der f Brief).

Ich habe versucht, eine SQL-Anfrage direkt in SqlDeveloper zu testen, ob Oracle macht den Unterschied mit und ohne die f Klein- oder Groß in ‚Jean-Francois‘, und es tut zu laufen.

Also was fehlt mir? Wie kann ich zur Doktrin sagen, wenn Sie einen f Kleinbuchstaben in den String-Parameter ich gebe Ihnen, und Sie finden nur einen F Großbuchstaben in der DB, bitte nicht abrufen, nichts, es ist kein Match ...

Danke trotzdem für deine Hilfe.

+0

Erstellen Sie Ihre eigene Repository-Funktion - lesen Sie zuerst die Dokumentation: http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/working-with-objects.html#custom-repositories – LBA

+1

Sie sollten nicht schreib nicht die Tags in deinen Titel; Sehen Sie auch, wie Sie Ihre Frage klarer stellen können. Siehe http://stackoverflow.com/editing-help. –

Antwort

0

Gelöst meine Probleme in meinem Orakel Zuhörer ....

Ich hatte das:

private static $_SQL_SET_SORT = "ALTER SESSION SET NLS_SORT=Latin_AI"; 
private static $_SQL_SET_COMP = "ALTER SESSION SET NLS_COMP=LINGUISTIC"; 

es zu, dass geändert und jetzt Lehre ist empfindlich:

private static $_SQL_SET_SORT = "ALTER SESSION SET NLS_SORT=BINARY_CI"; 
    private static $_SQL_SET_COMP = "ALTER SESSION SET NLS_COMP=BINARY"; 

diesen Beitrag anzeigen für weitere Informationen:

Case insensitive searching in Oracle