我有一个表单构建器,我在其中生成一个select选项。在这个选择中,我必须取出数据库中已存在的元素。为此,我正在创建一个查询构建器。
现在,在这个查询构建器中,我想创建一个JOIN
来从特定语言的语言表中获取单行。
问题是,在我添加此JOIN
后,symfony会返回一个访问错误:
错误:无法访问私有财产 XXX \ DatabaseBundle \实体\ AttributeGroupLanguage :: $ ID
以下是我的工作:
$builder->add('attributeGroups', 'entity', array(
'class' => 'XXX\DatabaseBundle\Entity\AttributeGroup',
'choice_label' => 'name',
'query_builder' => function(EntityRepository $er) use ($existingAttributeGroups) {
return $er->createQueryBuilder('ag')
->addSelect('agl')
->join('XXXDatabaseBundle:AttributeGroupLanguage agl', 'WITH agl.attributeGroup = ag.id')
->where('ag.id NOT IN (:existingAttributeGroups)')
->andWhere('agl.language = :languageId')
->setParameters(
array(
'existingAttributeGroups' => ($existingAttributeGroups) ?: '',
'languageId' => 1 //german
)
);
},
'attr' => array(
'class' => 'attributeGroupsList',
'style' => 'width: 250px'
)
));
答案 0 :(得分:0)
将public getId()方法添加到AttributeGroupLanguage实体。
public function getId(){
return $this->id;
}