原则,当使用默认的记录水合作用时,返回对象和关系到其他对象。在这种模式下,您可以编写大量查询以获得您想要的内容,具体取决于您将如何处理它们。找到工作的清单,并抓住所有的相关的作业和用户的使用:
$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
}
第一个查询会给你所有的工作,甚至是那些没有分配。第二,所有用户,也是没有任务的用户。第三,任务,如果需要的话,将有用户和工作。