教义1.2查询联接多对多

| 说我有以下许多工作和用户
 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
}
第一个查询将为您提供所有工作,甚至是没有分配的工作。第二,所有用户,也就是没有分配的用户。第三个是作业,如果需要的话,将包含用户和作业。     

要回复问题请先登录注册