我可以强制Doctrine 2存储库首先检查entityManager的结果

时间:2015-11-20 10:22:11

标签: php doctrine-orm entity persistence

我预计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));

在此示例中,$expectingMichaelJordanUserEntitynull,因为实体尚未保存到数据库中。它不应该首先在实体管理器中查找持久化实体吗?

这是意思还是有办法让我的例子返回持久的User实体?

1 个答案:

答案 0 :(得分:0)

您要求教义findOneBy数据库中的那些条件。在你的情况下,它返回null但如果你的数据库中有这样的用户firstName = 'Michael' AND lastName = 'Jordan',它也可以返回一条记录。

query的结果与您新创建的用户无关。

如果它会从EntityManager返回用户,那么你不会知道它是来自数据库还是来自内存。