在Propel ORM中使用MySQL函数

时间:2014-03-06 12:27:04

标签: php mysql symfony1 propel

我需要帮助在“symfony 1.1.9”框架中在Propel ORM中编写以下原始MYSQL查询,该框架包含SELECT和WHERE中的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 )

我搜索了很多。但无法得到任何相关的解决方案。我尝试了许多可能的解决方案。但没有任何作用。请注意,我不喜欢使用原始查询。请帮忙。任何帮助将不胜感激。提前谢谢。

1 个答案:

答案 0 :(得分: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();