Doctrine, при использовании увлажнения Record по умолчанию, возвращает объекты и отношения с другими объектами. В этом режиме вы можете написать несколько запросов, чтобы получить то, что вы хотите, в зависимости от того, что вы собираетесь с ними делать. Чтобы получить список заданий и получить все связанные с ними назначения и пользователей, используйте:
$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
}
Первый запрос даст вам все задания, даже без заданий. Во-вторых, все пользователи, а также те, кто не назначен. Третий, назначения, которые будут иметь пользователей и вакансии, если они требуются.