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