使用expr()将查询使用REGEX和CONCAT()转换为Doctrine queryBuilder

时间:2016-03-15 13:56:24

标签: php mysql regex symfony doctrine-orm

我正在使用beberlei doctrine extension REGEXP

撰写DoctrineExtensions\Query\Mysql\Regexp查询

我的工作SQL查询是:

WHERE (
    'http://www.example.com/product/1' REGEXP concat('^.*', `url`, '.*$') 
    AND
    `url_type` = 'contains'
)

urlurl_type是MySQL表格中的字段。

我在queryBuilder中使用它如下:

$qb->expr()->andX(
    $qb->expr()->eq('e.urlType', $qb->expr()->literal('contains')),
    'REGEXP(:url, CONCAT(:anythingBefore, e.url, :anythingAfter)) = 1'
)
->setParameter('anythingBefore', '^.*')
->setParameter('anythingAfter', '.*$')
->setParameter('url', $url);

是否可以使用以下$expr()重新编写它,因此我不必将正则表达式部分作为参数传递,因此我可以创建更复杂的正则表达式?

$qb->expr()->concat($qb->expr()->literal('^.*'), 'e.url', $qb->expr()->literal('.*$'))

0 个答案:

没有答案