Сначала я приведу пример с некоторым псевдокодом, а затем я объясню, в чем проблема. Позвольте мне сказать, что у меня есть два объекта User и Phonenumber. Их отношение одно-ко-многим. В моем UserRepository у меня может быть что-то вроде этого:
class UserRepository { public function getUser($id, $type) { $users = $this->createQuery("SELECT u, p FROM User u JOIN u.phonenumbers p WHERE u.id = :id AND p.type = :type") ->setParameters(array( 'id' => $id, 'type' => $type, )) ->getResult(); return $users[0]; } }
В моем приложении, если у меня есть что-то вроде:
$user = $userRepo->getUser(1, 'home'); var_dump($user->getPhonenumbers()); // here phonenumbers collection is ok $user = $userRepo->getUser(1, 'work'); var_dump($user->getPhonenumbers()); // Here phonenumbers collection is wrong. // It's exactly the same as the previous one.
Поэтому мои вопросы: возможно ли использовать соединение fetch (с разными критериями) и получать правильную коллекцию каждый раз?