1
我正在使用Doctrine和Oracle数据库结合使用。我大量使用特定于平台的功能,所以我已经创建了一些自定义的DQL函数。但是现在我遇到了一个严重的问题。要使用正则表达式执行LIKE查询,Oracle提供REGEXP_LIKE运算符。它看起来像一个函数,但实际上充当关系运算符。不幸的是,Doctrine只允许我创建自定义函数,而不是运算符。我不能像一个函数那样使用它,因为教义要求我使它成为一个完整的表达式,例如REGEXP_LIKE(foo, bar) != 0
。但对于Oracle来说,这是一个语法错误。Doctrine和Oracle REGEXP_LIKE
作为一种变通方法,我用这玩意儿在我的自定义功能DQL的getSql
方法:
CASE REGEXP_LIKE(foo, bar) THEN 1 ELSE 0 END
长相丑陋,但。有没有更好的方式让这个工作在教义?
,你不无论如何都需要DBAL(因为你的应用程序无论如何都不是可移植的)。您可能需要考虑仅使用Doctrine ORM,而不使用DBAL。 – lxg