Doctrine 1.2 DQL中的子查询为FROM

时间:2012-11-07 16:24:44

标签: doctrine subquery doctrine-1.2

好的,最重要的是在某个条件下获取mysql表中的行,这些行在同一个表中有另一个相关的行。这个表就像一个活动日志,所以我想通知某人“某个人”离开他的小组,但我只想在那个人在给定日期之前加入小组时做通知,所以我做的是下一个sql:

SELECT ua.*, ua2.*
  FROM user_activities AS ua 
     INNER JOIN (SELECT ua2.* FROM user_activities AS ua2
                 WHERE ua2.activity = "join-group"
                 ORDER BY ua2.created_at) 
     AS ua2 ON ua2.group_name = ua.group_name AND ua2.user_id = ua.user_id
  WHERE ua.activity = "unjoin-group";

由于清晰原因,我省略了日期条件。

所以我需要知道如何将其转换为DQL(对于学说1.2),是否可能?或者我最好以编程方式做到这一点?

我现在尝试的是:

$q = Doctrine_Query::create()
            ->from('UserActivity ua, ua.User u ')
            ->where('ua.created_at > ?', $min_date)
            ->andWhere('ua.activity = ?', "unjoin-group")
            ->andWhereIn('u.status', array(STATUS_HOT, STATUS_ACTIVE))
            ->andWhere('ua.user_id IN ( SELECT
                                            uaa.id
                                        FROM
                                            UserActivity uaa
                                        WHERE
                                            uaa.activity   = ? AND
                                            uaa.created_at < ? AND
                                            uaa.created_at > ? AND
                                            uaa.group_name = ua.group_name
                                        LIMIT 1',
                                            array("join-group", $min_date, $max_date));

但是我收到了这个错误:

致命错误最大函数嵌套级别'100'达到了中止

所以我无法继续前进

0 个答案:

没有答案