Symfony查询不像Alpha

时间:2016-02-12 08:33:44

标签: regex symfony doctrine-orm

我想只返回开始时不以alpha开头的记录,例如[a-z],只返回数字和符号。

查询

...
$query->andWhere(
         $query->expr()->notLike('l.name', ':letter')
         $query->setParameter('letter', '[a-z]' . '%');
);
...

上面仍然会返回一切。如果我将[a-z]替换为a,那么它将返回除a之外的所有内容,因此我知道查询有效。

我在我的应用程序中添加了https://github.com/beberlei/DoctrineExtensions/blob/master/src/Query/Mysql/Regexp.php

config.yml

doctrine:
         orm:
             dql:
                string_functions:
                                REGEXP: Bundle\DataBundle\Doctrine\Extension\Regexp

查询

$query->setParameter('letter', 'REGEXP([a-z])' . '%');

但仍然没有运气,它仍然会归还一切。

1 个答案:

答案 0 :(得分:1)

您可以在Doctrine中使用 REGEXP

public function getNotLike(){
    $qb = $this->createQueryBuilder('p')->select('p.wantedWord');
    $qb->where(......)
    ->andWhere('REGEXP(p.wantedWord, :word) = false')->setParameter('word', '[a-z]');

    return $qb->getQuery()->getArrayResult();
}