2016-04-21 16 views
0

Ich möchte die Groß-/Kleinschreibung für die Abfrage überprüfen. zuvor Ich verwende MongoRegex wie beschreiben in der this ticketSymfony2 + Notwendigkeit, den regulären Ausdruck in Doktrin mongodb ODM zu verwenden, um die Groß-/Kleinschreibung zu überprüfen

Aber gemäß dem Php.net das jetzt veraltet ist, so kann es nicht verwendet werden, schlagen sie MongoDB\BSON\Regex zu verwenden, aber ich bin nicht sicher, wie dies Symfony2 in verwenden. aber es wirft die Klasse nicht gefunden Ausnahme, wenn ich versuche, es zu verwenden.

Bitte lassen Sie mich die mögliche Lösung wissen. Oder eine andere Möglichkeit, die Groß-/Kleinschreibung in der benutzerdefinierten ODM-Abfrage zu überprüfen (möglicherweise in Feldfunktion)

Vielen Dank.

+0

Haben Sie das normale '/ pattern/i' versucht? Oder '/ (? I) Muster /'? –

+0

Sie * können MongoRegex * nicht verwenden, dann geben Sie bitte den Code an, der * für Sie * funktioniert und wann er nicht mehr funktioniert. –

+0

wie man '/ pattern/i' in findOneBy Abfrage der Lehre ?, bin ich neu in der Lehre so nicht sicher, wie man dies in findOneBy pareameter –

Antwort

0

ich benutzerdefinierte Abfrage geschrieben haben, wie folgt:

$name = 'abc' 
$db->createQuerBuilder() 
    ->distinct('username') 
    ->field('username')->where('function(){ var pattern = /^' . $name . '$/i; return pattern.test(this.username); }') 
    ->getQuery() 
    ->execute() 
    ->getSingleResult(); 

ich verwendet habe, Mongodbs, wo Funktion mit JavaScript-Test-Funktion. Reference link

0

Wenn MongoDB\BSON\Regex die Ausnahme "Klasse nicht gefunden" ergibt, verwenden Sie den Legacy-Treiber und müssen \MongoRegex verwenden. Wie Sie gesehen haben, ist der gesamte Treiber veraltet, aber Sie können ihn immer noch verwenden, außerdem ist es immer noch der einzige, den ODM offiziell unterstützt (ein neuer Treiber kann verwendet werden, wenn er mit einem Polyfill wie mongo-php-adapter kombiniert wird).

So Ihre Frage, Groß- und Kleinschreibung Suche beantworten wird wie folgt aussehen (gegeben $qb ist ein Query Builder):

$qb->field('something')->equals(new \MongoRegex("/regex/i")); 
+0

, aber ich kann nicht MongoRegex . gibt es andere oprions –

+0

Warum kannst du 'MongoRegex' nicht benutzen? – malarzm

+0

wie auf dem php.net (http://php.net/manual/en/class.mongoregex.php) diese Klasse ist veraltet. sie haben eine andere http://php.net/manual/en/class.mongodb-bson-regex.php gegeben, aber das funktioniert nicht für mich –