我想只返回开始时不以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])' . '%');
但仍然没有运气,它仍然会归还一切。
答案 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();
}