2014-03-06 64 views
0

在「Symfony 1.1.9」框架中,在SELECT和WHERE中包含MySQL函數的Propel ORM中編寫以下原始MYSQL查詢需要幫助。在Propel ORM中使用MySQL函數

SELECT DATE(u.date) date, TIME(u.date) time, u.id account_id, u.user_name , 
     IF((SELECT COUNT(id) 
     FROM bank 
     WHERE user_id = u.id 
     AND DATE(creation_date) > DATE_ADD(CURDATE() , INTERVAL -30 
     DAY) 
     GROUP BY user_id) , 'Y', 'N' 
     ) AS deposited 
     FROM user u 
     WHERE DATE(u.dat) > DATE_ADD(CURDATE() , INTERVAL -30 
     DAY) 

我爲此搜了很多。但無法獲得任何相關解決方案。我嘗試了很多可能的解決方案。但沒有任何工作。請注意,我不喜歡使用原始查詢。請幫忙。任何幫助將不勝感激。提前致謝。

回答

0

我發現的最好的文章就是這個頁面上的文章: http://propelorm.org/reference/model-criteria.html#using-a-query-as-input-for-a-second-query-table-su請參考子查詢部分。

爲了讓您一開始,你可以嘗試類似如下(我沒有測試此所以它必然有一些錯誤):

$deposited = BankQuery::create() 
->filterByCreationDate($back30days, Criteria::GREATER) 
->groupBy('Bank.UserId'); 

$users = UserQuery::create() 
->addSelectQuery($deposited, 'deposited') 
->where('deposited.UserId = User.Id') 
->filterByDate($back30days, Criteria::GREATER) 
->find();