原則,當使用默認的記錄水合作用時,返回對象和關係到其他對象。在這種模式下,您可以編寫大量查詢以獲得您想要的內容,具體取決於您將如何處理它們。找到工作的清單,並抓住所有的相關的作業和用戶的使用:
$jobs = Doctrine_Query::create()
->from('Job j')
->leftJoin('j.Assignments a')
->innerJoin('a.user u')
->execute();
foreach($jobs as $job) {
foreach($job->Assignments as $assignment) {
$user = $assignment->user;
// do something with $job and $user here
}
}
在這種情況下,你需要從工作添加關係分配。如果你想要做的相反,得到用戶的列表,並加入到他們的工作,使用方法:
$users = Doctrine_Query::create()
->from('User u')
->leftJoin('u.Assignments a')
->innerJoin('a.job j')
->execute();
foreach($users as $user) {
foreach($user->Assignments as $assignment) {
$job = $assignment->job;
// do something with $job and $user here
}
}
在這種情況下,你需要從用戶到分配的關係。
你甚至可以分配開始,如果這是你在找什麼:
$assignments = Doctrine_Query::create()
->from('Assignment a')
->innerJoin('a.user u')
->innerJoin('a.job j')
->execute();
foreach($assignments as $assignment) {
$user = $assignment->user;
$job = $assignment->job;
// do something with $job and $user here
}
第一個查詢會給你所有的工作,甚至是那些沒有分配。第二,所有用戶,也是沒有任務的用戶。第三,任務,如果需要的話,將有用戶和工作。