Я использую Symfony2 с Doctrine и хочу изменить отношение между двумя таблицами, представленными промежуточной таблицей. Структура выглядит так:
Entity Tour хранится в настольном туре
Тег сущности, хранящийся в табличных тегах
У меня есть средняя таблица tour_tags для хранения двух индексов в строке: tour_id, tag_id.
А определение сущности выглядит следующим образом:
/**
* @ORM\Table(name="tour")
* @ORM\Entity
*/
Tour {
/**
* @ORM\ManyToMany(targetEntity="Tag")
* @ORM\JoinTable(name="tour_tags",
* joinColumns={@ORM\JoinColumn(name="tour_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="tag_id", referencedColumnName="id")}
* )
*/
private $tags;
...
}
/**
* @ORM\Table(name="tags")
* @ORM\Entity
*/
class Tag {
...
}
Как видите, я не поместил никакой информации об отношениях в объекте Tag.
Эта схема работает нормально при получении связанных данных, тегов для каждого тура и т. Д.
Но я хочу, чтобы пользователь мог редактировать информацию об отношениях с помощью флажков в форме тура. Я хочу включить в таблицу набор флажков, один для существующего тега.
С этим документом http://symfony.com/doc/current/cookbook/form/form_collections.html можно редактировать имена тегов из формы тура:
/* The tour form */
Class TourType {
public function buildForm(FormBuilder $builder, array $options) {
...
$builder->add('tags', 'collection', array('type' => new TourTagsType()));
}
}
но не создавать и не удалять отношения (таблица tour_tags).
Я ищу способ внедрить отношение (tour_tag) в форму, чтобы флажки отображались, если в таблице есть строка tour_id, tag_id.