Я использую 4 сущности:
- переводчик
- язык
- переводчик_язык
- сайт
Переводчик может иметь много языков. У языков может быть много переводчиков. Сайту может быть назначена пара переводчик/язык.
Поэтому я был вынужден создать translation_language, даже если внутри нет «настоящего атрибута».
class Language {
/**
* @var \XX\TranslateBundle\Entity\TranslatorLanguage
*
* @ORM\OneToMany(targetEntity="TranslatorLanguage", mappedBy="language")
*/
private $translators;
xx
class Translator {
/**
* @var XX\TranslateBundle\Entity\TranslatorLanguage
*
* @ORM\OneToMany(targetEntity="TranslatorLanguage", mappedBy="translator")
*/
private $languages;
xx
class TranslatorLanguage
{
/**
* @var XX\TranslateBundle\Entity\Translator
*
* @ORM\Id
* @ORM\ManyToOne(targetEntity="Translator", inversedBy="languages")
* @ORM\JoinColumn(name="translatorID", referencedColumnName="ID", nullable=false)
*/
private $translator;
/**
* @var XX\TranslateBundle\Entity\Language
*
* @ORM\Id
* @ORM\ManyToOne(targetEntity="Language", inversedBy="translators")
* @ORM\JoinColumn(name="languageID", referencedColumnName="ID", nullable=false)
*/
private $language;
/**
* @var XX\TranslateBundle\Entity\TranslatorSite
*
* @ORM\OneToMany(targetEntity="TranslatorSite", mappedBy="translatorLanguage")
*/
private $translatorSites;
Сопоставление в порядке ([Mapping] OK — файлы сопоставления верны.)
С отображением ManyToMany я мог бы сделать
$formMapper->add('languages', null,
array('required' => false, 'expanded' => true))
в TranslatorAdmin.php, и это будет отображать флажки для каждого языка и проверять один для языков, связанных с переводчиком, теперь я пытаюсь получить это с моей новой архитектурой, но мне никак не удается сделать это легко.
Я действительно не хочу создавать переводчикязыкАдминистратор, потому что я не хочу, чтобы форма была одинаковой, исходящей от переводчика или языка (как это можно сделать с помощью простого сопоставления многие ко многим)
Нужно ли связывать запрос и шаблон с showMapper? Или я пропустил что-то легкое?