问题描述
|
说我有以下许多工作和用户
Assignment:
columns:
job_id:
....
user_id:
....
relations:
user:
local: user_id
foreign: id
job:
local: job_id
foreign: id
是否可以查询Job,然后加入job.assignment,以便结果返回所有作业,然后还为每个job.assignment返回其他行?
解决方法
当使用默认的“记录”水合时,“学说”将对象和关系返回到其他对象。在这种模式下,您可以编写许多查询来获取所需的内容,具体取决于要对它们进行的处理。要获取作业列表并获取其所有关联的“工作分配”和“用户”,请使用:
$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
}
第一个查询将为您提供所有工作,甚至是没有分配的工作。第二,所有用户,也就是没有分配的用户。第三个是作业,如果需要的话,将包含用户和作业。