情况:
我想使用getReference() doctrine2实体管理器的功能。 然而,在一个情况下,我要求已经从数据库中删除的对象时,我得到一个代理,如果我为同一对象问一次以上。
一个例子:
//A random article object...that has been deleted from the database
$articleClass = 'Acme\ArticleBundle\Entity\Article';
$articleIdentifiers = array('id'=>1);
$i = 0;
//We ask for its reference twice
do{
try {
echo "a";
$subject = $this->em->getReference(
$subjectClass,
$subjectIdentifiers
);
//call this object now
var_dump($subject);
} catch (\Exception $e) {
echo "b";
}
$i++;
} while ($i <2);
输出:
a
b
a
object(Proxies\__CG__\Acme\ArticleBundle\Entity\Article)
我怎样才能得到一个对象,甚至不存在于数据库中的代理? 如果我评论这一行 ,EntityManager的不管理的对象,我得到的输出abab
,这对我做,因为我不希望得到的是不存在于数据库中的代理对象更有意义。 对于信息,对象返回的代理具有其所有属性null
。 因此,我得到一个对象不存在于数据库中的代理。 所以,如果我问这个对象,我收到了“未找到实体”的异常。
我们面临的挑战
任何人都可以做的这个任何意义? 是否有依赖的方式getReference()
告诉我们这是否真的对象在数据库中确实存在?