我预计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
实体?
答案 0 :(得分:0)
您要求教义findOneBy
数据库中的那些条件。在你的情况下,它返回null但如果你的数据库中有这样的用户firstName = 'Michael' AND lastName = 'Jordan'
,它也可以返回一条记录。
此query
的结果与您新创建的用户无关。
如果它会从EntityManager
返回用户,那么你不会知道它是来自数据库还是来自内存。