使用原始SQL我習慣性地執行以下操作:使用Doctrine查詢生日當天ORM
SELECT * FROM users WHERE MONTH(birthday) = 11 AND DAY(birthday) = 17
。
但這些MONTH()
和DAY()
功能並不適用於所有的數據庫工作=/
那麼,什麼是可以做到這一點與學說支持的任何數據庫工作的最好方法?
使用原始SQL我習慣性地執行以下操作:使用Doctrine查詢生日當天ORM
SELECT * FROM users WHERE MONTH(birthday) = 11 AND DAY(birthday) = 17
。
但這些MONTH()
和DAY()
功能並不適用於所有的數據庫工作=/
那麼,什麼是可以做到這一點與學說支持的任何數據庫工作的最好方法?
爲了使這一測算,在SQL服務器級別,你將必須創建一些自定義DQL功能:
http://www.doctrine-project.org/blog/doctrine2-custom-dql-udfs.html
看看官方文檔太:
以下是postgresql DISTANCE函數的示例:
您的擔心是使這項工作適用於任何suuported RDBM? 利用DatabasePlatform中的getSql()
方法:
<?php
public function getSql(SqlWalker $walker)
{
$walker->getConnection()->getDatabasePlatform(); // platform specific stuff
}
感謝您的回覆@Florian。我只是不明白爲什麼Doctrine沒有標準的DQL函數,因爲所有的RDBM都支持這種類型的函數。 我正在創建[一個ZF2模塊](https://github.com/Danizord/DaniPerson)來抽象這個問題,並且我打算最終在Doctrine上實現這個DQL函數的pull請求。你怎麼看? – Danizord
我認爲同樣的原因:http://stackoverflow.com/a/10762751/244058 – Florian