我正试图从实体自己的存储库访问其私有属性。通过执行PHP操作,告诉我不能访问私有或受保护的属性或方法。
我只是调用一个由我创建的自定义存储库方法,传递实体的一个实例。例如,当我尝试获取ID时,php会向我抛出错误。
我如何访问它?
public function customMethod($entityInstance)
{
$query = $this->getEntityManager()
->createQuery(
'SELECT c
FROM AcmeMainBundle:Content c
WHERE
c.published = 1
AND
c.id != :id
ORDER BY c.date DESC'
)
->setParameter('id',$entityInstance->id);
return $query->getResult();
}
这是我的存储库的自定义方法的一个示例。显然,这只是一个例子,DQL不是很有用,但当我尝试访问$entityInstance->id时。。。
有人能帮我吗?
Repository
和Entity
之间的关系是概念性的,而不是结构性的。这意味着,尽管您知道与相关,PHP却没有。
如果你想从 试试这个:Repository
访问Entity
的私有成员,你必须像对待任何其他类一样:使用getters和setters->setParameter('id', $entityInstance->getId());
好吧,就像所有普通的PHP脚本一样,如果你想访问私有或受保护的属性,你必须创建一个getter。DQL没有改变PHP站点的任何内容,它只对SQL语法(在PHP中只是一个字符串)添加了一些小的更改。
所以实际上,我不明白你想对这个问题说什么。DQL应该改变PHP和OO的工作方式吗?