Я ожидал, что хранилище Doctrine 2 проверит EntityManager
для результатов в первую очередь. Но это не так.
Этот код представляет проблему.
$em = $this->getEntityManager();
$firstName = 'Michael';
$lastName = 'Jordan';
$userEntity = new User($firstName, $lastName);
$em->persist($userEntity);
$userRepository = $em->getRepository('UserRepository');
$expectingMichaelJordanUserEntity = $userRepository->findOneBy(array('firstName' => $firstName, 'lastName' => $lastName));
В этом примере $expectingMichaelJordanUserEntity
является null
потому что объект не был сохранен в базе данных. Разве он не должен искать внутри менеджера сущностей в первую очередь постоянные сущности?
В этом ли смысл или есть способ заставить мой пример вернуть User
юридическое лицо?
Вы просите учение findOneBy
эти критерии внутри базы данных. В вашем случае он возвращает ноль, но он мог бы также вернуть запись, если бы был такой пользователь firstName = 'Michael' AND lastName = 'Jordan'
внутри вашей базы данных.
Результатом этого query
не имеет ничего общего с вашим вновь созданным пользователем.
Если он вернет пользователя из EntityManager
тогда вы бы не знали, из базы это или из памяти.
Других решений пока нет …