首页 > 解决方案 > 我想制作一个搜索表单,我可以在其中专门搜索与 Symfony 5 上的另一个实体具有空关系的实体

问题描述

我正在编写一个 symfony 应用程序,其中某个实体(比方说汽车)与另一个实体(比方说油漆颜色)有关系,但这种关系也可以为空(一辆没有任何颜色记录的汽车)。

我想制作一个表格来在我的数据库中搜索汽车,您可以:

我可以轻松完成 1 和 3,但 2 更难。

我能做的最好的事情是从数据库中加载所有颜色,破解一个未持久的颜色实体(它会有一个空 id)并将它放在一个选择类型中。

然而,这从来没有感觉“干净”,我现在对此有疑问。

到目前为止,这是我的表格:

class Search extends AbstractType
{

    public function __construct(EntityManagerInterface $entityManager)
    {
    $this->entityManager = $entityManager;
    }

    private function getColorRepository(): ColorRepository
    {
        return $this->entityManager->getRepository(Color::class);
    }

    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $colors = $this->getColorRepository->findAll();
        $unidentifiedColor = new Color();
        $unidentifiedColor->setName("Not identified");
        array_unshift($colors, $unidentifiedColor);

        $builder
        ->add('color', ChoiceType::class, [

            'choice_label' => 'name',
            'multiple' => false,
            'expanded' => false,
            'required' => false,
            'choices' => $colors,
            'placeholder' => 'Select a color ...',
        ]);
    }
}

这符合我的预期(默认选择是占位符,第二选择是“未识别”,其余的是您可以选择的颜色)。但是我现在需要使用EntityType,我不能再这样做了。

有人遇到过这个问题吗?你会如何解决这个问题?

标签: phpdoctrine-ormdoctrinesymfony-formssymfony5

解决方案


推荐阅读