[英]doctrine2 attribute doesn't exist
这是我的实体:
/**
* @ORM\Table(name="Animal")
* @ORM\HasLifecycleCallbacks
*/
class Animal {
/**
* @var integer $id
*
* @ORM\Column(name="id", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @var localizedcontent $lctitle
*
* @ORM\ManyToOne(targetEntity="localizedcontent",fetch="EAGER", cascade={"persist"})
* @ORM\JoinColumn(name="lcTitle", referencedColumnName="pkId", nullable=false)
*/
private $lctitle;
/**
* @var localizedcontent $lcdescription
*
* @ORM\ManyToOne(targetEntity="localizedcontent",fetch="EAGER", cascade={"persist"})
* @ORM\JoinColumn(name="lcDescription", referencedColumnName="pkId", nullable=false)
*/
private $lcdescription;
/**
* @ORM\PostLoad
*/
public function postLoad(){
$lct = $this->lctitle;
$lcd = $this->lcdescription;
}
这是我的dql:
SELECT a,lct FROM Animal JOIN e.lctitle lct WHERE a.id=:id
当我启动xdebug时,它告诉我lcdescription是一个代理对象,而lctitle不存在。 我不知道为什么 我认为postLoad事件为时过早,因为此时尚未加载localizedcontent,对吗? 是否存在其他侦听器来读取与动物对象有关的lctitle值?
谢谢
原则总是返回代理。 这些类从实体类继承。 如果您声明自己的关系受保护而不是私人关系,可能会有所帮助。
/**
* @var localizedcontent $lctitle
*
* @ORM\ManyToOne(targetEntity="localizedcontent",fetch="EAGER", cascade={"persist"})
* @ORM\JoinColumn(name="lcTitle", referencedColumnName="pkId", nullable=false)
*/
protected $lctitle;
或者您可以编写一个吸气剂并在后加载函数中调用它
public function getLctitle() {
return $this->lctitle;
}
public function getLcdescription() {
return $this->lcdescription;
}
/**
* @ORM\PostLoad
*/
public function postLoad(){
$lct = $this->getLctitle();
$lcd = $this->getLcdescription();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.