从Symfony2存储库访问私有或受保护的属性



我正试图从实体自己的存储库访问其私有属性。通过执行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时。。。

有人能帮我吗?

RepositoryEntity之间的关系是概念性的,而不是结构性的。这意味着,尽管您知道相关,PHP却没有。

如果你想从Repository访问Entity的私有成员,你必须像对待任何其他类一样:使用getterssetters

试试这个:

->setParameter('id', $entityInstance->getId());

好吧,就像所有普通的PHP脚本一样,如果你想访问私有或受保护的属性,你必须创建一个getter。DQL没有改变PHP站点的任何内容,它只对SQL语法(在PHP中只是一个字符串)添加了一些小的更改。

所以实际上,我不明白你想对这个问题说什么。DQL应该改变PHP和OO的工作方式吗?

最新更新