Symfony2 +需要在doctrine的mongodb ODM中使用正则表达式来检查不区分大小写的检查

时间:2016-04-21 06:46:32

标签: php regex mongodb symfony doctrine-odm

我想对查询进行不区分大小写的检查。 以前我在this ticket

中使用MongoRegex作为描述

但是根据Php.net,现在已经弃用了,所以不能使用它,他们建议使用MongoDB\BSON\Regex,但我不确定如何在symfony2中使用它。但如果我尝试使用它,它会抛出类未找到的异常。

请告诉我可能的解决方案。 或者在ODM自定义查询中进行不区分大小写检查的任何其他方法(可能在字段函数中)

非常感谢你。

2 个答案:

答案 0 :(得分:1)

我编写了自定义查询,如下所示:

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

我使用了mongodbs,其中函数具有JavaScript测试功能。 Reference link

答案 1 :(得分:0)

如果使用curl --insecure --digest 'https://password@localhost:9993/management' --header "Content-Type: application/json" -d '{"deployment":"bob","operation":"read-attribute","name":"status","json.pretty":1}' 会产生“未找到类”异常,那么您使用的是旧版驱动程序,需要使用MongoDB\BSON\Regex。正如您所见,整个驱动程序已被弃用,但您仍然可以使用它,它仍然是ODM官方支持的唯一一个(如果与mongo-php-adapter等polyfill结合使用,则可以使用新驱动程序。)

因此,要回答您的问题,不区分大小写的搜索将会显示(给定\MongoRegex是查询构建器):

$qb