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

从Symfony2存储库访问私有或受保护的属性,symfony,repository,entity,private,Symfony,Repository,Entity,Private,我试图从一个实体自己的存储库中访问该实体的私有属性。通过使用PHP,我知道我无法访问私有或受保护的属性或方法 我只是调用我创建的自定义存储库方法,传递实体的实例。例如,当我尝试获取ID时,php会抛出错误 我怎样才能访问它 public function customMethod($entityInstance) { $query = $this->getEntityManager() ->createQuery( 'SELECT c

我试图从一个实体自己的存储库中访问该实体的私有属性。通过使用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时


有人能帮我吗?

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


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

存储库和实体之间的关系是概念性的,而不是结构性的。这意味着,尽管您知道它们是相关的,PHP

如果您想从
存储库
访问
实体
的私有成员,您必须像访问任何其他类一样:使用getterssetters

试试这个:

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