好的,最重要的是在某个条件下获取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'达到了中止
所以我无法继续前进