我正在尝试在我的某个实体类中获取特定字段,以显示在我的表单上的下拉列表中。实体确实有一对一的关系,虽然我试图检索到我的表单的字段不是与另一个类相关的字段。
为了简单起见,我还希望只在下拉列表中显示该字段的不同值。我尝试过类似的事情:How to select distinct query using symfony2 doctrine query builder?但是还没有让它发挥作用。我已经产生了错误,例如“警告:spl_object_hash()期望参数1是对象,给出字符串”
以下是我到目前为止所写的内容......
在Form的课程中......
$builder
->add('typeOfPosition', EntityType::class, array(
'class' => Choices::class,
'label' => 'Type of Position: ',
'query_builder' => function(EntityRepository $er){
return $er->createQueryBuilder('c')
->select('DISTINCT c.type');
},
表单所在的实体:
/**
* @ORM\OneToOne(targetEntity="Position", inversedBy="division")
* @ORM\JoinColumn(name="position", referencedColumnName="id")
*/
private $position;
/**
* @var string
*
* @ORM\Column(name="type", type="string", length=255)
*/
private $type;
它是关系实体:
/**
* @var string
*
* @ORM\OneToOne(targetEntity="Choices", mappedBy="position")
*/
private $division;
答案 0 :(得分:1)
让我们一步一个脚印。 要获得您的实体下拉菜单,您应该使用'属性'指定所需选项的选项
$builder->add('typeOfPosition', EntityType::class, array(
'class' => Position::class,
'property' => 'type',
));
我知道你想要有不同的标签,但如果你做了一个独特的标签,你怎么知道选择的id会是好的?
1 => TYPE_1
2 => TYPE_1
3 => TYPE_3
你为什么要做一个独特的?你的下拉列表中选择的ID是什么? 无论如何,这是如何做一个截然不同的:How to select distinct query using symfony2 doctrine query builder?