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