我已經研究了很多,我確定答案是否定的,但我很樂意證明錯誤。在Doctrine 2.x中使用REGEXP ORM
我想執行包含REGEXP操作的DQL編寫的查詢。例如:
select * from assets
where campaign_id = 1
and fileName REGEXP 'godzilla*'
order by fileName desc
又名
$builder->add('select', 'a.fileName')
->add('from', '\Company\Bundle\Entity\Asset a')
->add('where', 'a.campaign=1')
->...REGEXP MAGIC...
->add('orderBy', 'a.fileName desc');
(這是一個簡單的正則表達式,我意識到可以做的喜歡,但它只是一個例子 - 我真正的正則表達式的表達更復雜)
我查看了Doctrine \ ORM \ Query \ Expr類以及QueryBuilder類。我看不到REGEXP的支持。有人在SO上有一篇文章說他們使用Expr類,但這實際上並不奏效(他們表示這是未經測試的)。
任何想法如何在DQL中執行REGEXP w/out直寫SQL? TIA。
在博客帖子壞鏈接,它不再是最新的(doctrine1)嗎? – 2014-08-20 12:19:19
@PetterSoderlund fixed – 2014-08-24 10:28:00
有一點需要注意:您必須在REGEXP的末尾添加一個比較運算符,否則Doctrine會反彈回來。即使REGEXP不需要,Doctrine也要求所有where子句都有比較運算符 – Patrick 2015-06-25 18:02:09