我有一个带有referrer字段的User类:
class User {
/**
* @ORM\ManyToOne(targetEntity="User", cascade={"detach"})
* @ORM\JoinColumn(name="referrer", referencedColumnName="id")
*/
protected $referrer = null;
public function getReferer(){
return $this->referrer;
}
}
我读到的是,自从Doctrine 2.2调用$user->getReferer()->getId()
后,我应该在没有学说的情况下引用附加查询。
但就我而言,学说是从数据库中获取整个实体。 我做错了什么?
我使用symfony 2.7.1并运行echo \Doctrine\ORM\Version::VERSION
来检查doctrine的版本。
($user->getReferrer()
尚未解除任何其他查询。)
修改:
我如何测试它:
$user = $this->getUser();
$referrer = $user->getReferrer();
//Until there one query is executed by security(?) to fetch authenticated user.
//Referrer is not yet initialized.
$this->addFlash('info', 'Referrer id: '.$referrer->getId());
//Now second query was fired. And $refferer is now initialized.
return array('data' => $referrer); //return $refferer object for twig dump.
对于没有getId()
的代码,Twig会转储这样的内容:
User {#1184 ▼
+__isInitialized__: false
#id: "2"
#referrer: null
}
这适用于getId()
上使用$referrer
的代码:
User {#1184 ▼
+__isInitialized__: true
#id: 2
#referrer: null
}