0

好的,所以最重要的是在给定某些条件的情况下,获取 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”达到中止

所以我无法继续前进

4

0 回答 0