具有ManyToMany关系的表单已切换为具有其他字段的间接实体

时间:2018-09-27 18:58:55

标签: symfony symfony-forms symfony4

我有两个实体,生产者和功能。它们之间存在ManyToMany关系,但是我需要附加字段$ description,其中将包含生产者选择的功能的描述(每个生产者都可以用自己的话描述相同的功能)。为此,我创建了一个间接ProducerFunctionality实体(见下文)。

现在我有一个生产者编辑表单($resolver->setDefaults(['data_class' => Producer:class]))。我需要显示所有功能。它们必须是复选框,并且在每个复选框旁边,我需要具有$ description字段(文本区域)。如果生产者已经选择了任何功能(因此$ producerFunctionalities集合不为空),则在渲染表单时,我需要选中相应的复选框并填充$ description文本区域。 Symfony表单系统可以处理吗?

这是简化的模型:

/**
 * @ORM\Entity
 */
class Producer
{
    /**
     * @ORM\OneToMany(targetEntity="ProducerFunctionality", mappedBy="producer", cascade={"persist", "remove"}, orphanRemoval=true)
     */
    private $producerFunctionalities;

    // getter, adder, remover
}

/**
 * @ORM\Entity
 */
class ProducerFunctionality
{
    /**
     * @ORM\ManyToOne(targetEntity="Producer", inversedBy="producerFunctionalities")
     * @ORM\JoinColumn(nullable=false)
     */
    private $producer

     /**
      * @ORM\ManyToOne(targetEntity="Functionality")
      * @ORM\JoinColumn(nullable=false)
      */
     private $functionality;

     /**
      * @ORM\Column(type="text")
      */
     private $description;

    // getters and setters
}

/**
 * @ORM\Entity
 */
class Functionality
{
    /**
     * @ORM\Column
     */
    private $name;

    // getter and setter. No relation to ProducerFunctionality, because there won't be updating ProducerFunctionality from this side of realtion.
}

0 个答案:

没有答案