0
我有一組完成特定測試的用戶以及一個獲得該測試邀請的用戶列表。現在我想取得所有沒有完成測試的用戶。我認爲這很容易區分兩個集合(如數組),但只有Doctrine_Collection::merge()
是可能的。兩個Doctrine_Collection實例的差異
我的數據模型(左得多爲了清楚):
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