gpt4 book ai didi

使用 Doctrine 2 查询生成器的正则表达式?

转载 作者:行者123 更新时间:2023-12-02 03:51:38 25 4
gpt4 key购买 nike

根据标题,如何使用 Doctrine 2 查询构建器匹配正则表达式?基本上我正在尝试生成独特的蛞蝓。

这是我当前的实现。我生成了子弹。然后我检查是否有像这个蛞蝓一样正在使用的蛞蝓。如果有,我将在 slug 末尾附加一个 -{number},其中 {number} 是尚未使用的最小数字。

$qb->select(array('partial o.{id, slug}'))
->from('Foo\Bar\Entity\Object', 'o')
->where($qb->expr()->like('o.slug', ':slug'));

$slug = new SlugNormalizer($text);
$qb->setParameter('slug', $slug->__toString().'-%');

这里的问题是 LIKE slug% 可以匹配 foo-bar-1、foo-bar-2 和 foo-bar-not-the-same-slug。更干净的是正则表达式寻找 REGEX slug-(\d+) 或类似的东西。

有什么方法可以使用 Doctrine 2 查询生成器来执行此操作吗?

最佳答案

安装DoctrineExtensionsBundle :

composer require beberlei/doctrineextensions

添加 REGEXP 配置 - 更新您的 app/config.yml

doctrine:
orm:
dql:
string_functions:
regexp: DoctrineExtensions\Query\Mysql\Regexp

无论您的 QueryBuilder 在哪里,都可以执行以下操作:

$qb = $this->createQueryBuilder('x');

return $qb->andWhere('REGEXP(x.your_property, :regexp) = true')
->setParameter('regexp', '[[:digit:]]{3}') // insert your own regex here
->getQuery()->getResult();

并且不要忘记使用 SQL 兼容的正则表达式

关于使用 Doctrine 2 查询生成器的正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6574760/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com