Php 带有查询生成器的表单生成器无法访问联接的属性
我有一个表单生成器,在其中生成一个选择选项。在这个选择中,我必须取出数据库中已经存在的元素。为此,我创建了一个查询生成器。 现在,在这个查询生成器中,我想创建一个Php 带有查询生成器的表单生成器无法访问联接的属性,php,mysql,symfony,symfony-forms,Php,Mysql,Symfony,Symfony Forms,我有一个表单生成器,在其中生成一个选择选项。在这个选择中,我必须取出数据库中已经存在的元素。为此,我创建了一个查询生成器。 现在,在这个查询生成器中,我想创建一个连接,从语言表中获取特定语言的一行。 问题是,在我添加此JOINsymfony后,它返回一个访问错误: 错误:无法访问私有属性 XXX\DatabaseBundle\Entity\AttributeGroup语言::$id 以下是我的工作: $builder->add('attributeGroups', 'entity', ar
连接
,从语言表中获取特定语言的一行。
问题是,在我添加此JOIN
symfony后,它返回一个访问错误:
错误:无法访问私有属性
XXX\DatabaseBundle\Entity\AttributeGroup语言::$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'
)
));
将public getId()方法添加到AttributeGroupLanguage实体
public function getId(){
return $this->id;
}
将public getId()方法添加到AttributeGroupLanguage实体
public function getId(){
return $this->id;
}
查看报告的错误,您可能应该为$id属性的AttributeGroupLanguage添加一个getter方法。查看报告的错误,您可能应该为$id属性的AttributeGroupLanguage添加一个getter方法。我已将所有getter和setter设置为CoreCtlyn,但答案不正确,我会做什么:我倾向于尽可能避免使用“实体”类型。我使模型和存储库逻辑远离用户界面(表示)层。我会将其设置为“选择”类型,并添加检索和格式化数据以提供“选择”选项的服务方法。我最终创建了一个新函数,不再使用实体,而是简单的选择,该函数的结果就是选择数组。还在等待也许有人知道在这里该做什么…我有所有的getter和setter设置coretlyn不是正确的答案,但是,我会做什么:我倾向于尽可能避免使用“实体”类型。我使模型和存储库逻辑远离用户界面(表示)层。我会将其设置为“选择”类型,并添加检索和格式化数据以提供“选择”选项的服务方法。我最终创建了一个新函数,不再使用实体,而是简单的选择,该函数的结果就是选择数组。还在等也许有人知道该怎么做。。。