Форма с отношением ManyToMany переключена на сторонний объект с дополнительным полем - PullRequest
0 голосов
/ 27 сентября 2018

У меня есть две сущности, Производитель и Функциональность.Они находятся в отношении ManyToMany, однако мне нужно дополнительное поле $ description, которое будет содержать описание для функциональности, выбранной Производителем (каждый производитель может описать ту же функциональность своими словами).Для этого я создал косвенную сущность ProducerFunctionality (см. Ниже).

Теперь у меня есть форма редактирования Producer ($resolver->setDefaults(['data_class' => Producer:class])).Мне нужно отобразить ВСЕ функции.Они должны быть флажками, и рядом с каждым флажком мне нужно иметь поле $ description (textarea).Если у производителя уже выбраны какие-либо функциональные возможности (поэтому коллекция $ providerFunctionalities не пуста), мне нужно установить соответствующие флажки и заполнить текстовое поле $ 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.
}
...