【发布时间】:2011-09-16 07:22:22
【问题描述】:
我有一组完成了某项测试的用户,以及一份收到该测试邀请的用户列表。现在我想获取所有没有完成测试的用户。我认为区分这两个集合(如数组)很简单,但只有Doctrine_Collection::merge() 是可能的。
我的数据模型(为了清楚起见,省略了很多):
Invite:
columns:
id: integer (10)
relations:
users:
foreignAlias: invites
class: User
refClass: UserInvite
UserInvite:
columns:
user_id: integer (10)
invite_id: integer (10)
relations:
user:
class: User
foreignAlias: userInvite
invite:
class: Invite
foreignAlias: userInvite
Test:
columns:
id: integer (10)
user_id: integer (10)
invite_id: integer (10)
relations:
user:
class: User
foreignAlias: tests
invite:
class: Invite
foreignAlias: tests
现在这两个系列可供我使用:
$invite = new Invite;
$invite = $invite->users; // All the users who got an invite
$invite = $invite->tests; // All the tests performed for this invite
获得所有用户的最佳方法是什么?我可以执行 SQL 查询,但我不喜欢在 OOP php 或 DQL 查询中执行此操作。在 SQL 中,我可以这样做:
SELECT u.name, u.id
FROM user u
LEFT JOIN userinvite i
ON i.user_id = u.id
LEFT JOIN test t
ON t.user_id = u.id
WHERE i.id IS NOT NULL
AND t.id IS NULL
【问题讨论】:
标签: php mysql collections doctrine doctrine-collection