如何使用实体类

时间:2018-01-17 14:44:39

标签: php forms symfony doctrine-orm

我正在尝试在我的某个实体类中获取特定字段,以显示在我的表单上的下拉列表中。实体确实有一对一的关系,虽然我试图检索到我的表单的字段不是与另一个类相关的字段。

为了简单起见,我还希望只在下拉列表中显示该字段的不同值。我尝试过类似的事情: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;

1 个答案:

答案 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?