Я использую 4 entites:Sonata Администратор многие ко многим с атрибутами образуют
- переводчик
- язык
- translator_language
- сайт
Переводчик может иметь множество языков. Языки могут иметь много переводчиков. На сайт может быть назначен переводчик/язык.
Таким образом, я был вынужден создать translation_language, даже если внутри нет «реального атрибута».
class Language {
/**
* @var \XX\TranslateBundle\Entity\TranslatorLanguage
*
* @ORM\OneToMany(targetEntity="TranslatorLanguage", mappedBy="language")
*/
private $translators;
хх
class Translator {
/**
* @var XX\TranslateBundle\Entity\TranslatorLanguage
*
* @ORM\OneToMany(targetEntity="TranslatorLanguage", mappedBy="translator")
*/
private $languages;
хх
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, и это будет отображать флажки для каждого языка и проверено на языках, связанных с переводчиком, теперь я пытаюсь получить это с помощью моей новой архитектуры, но никак не могу это сделать легко.
Я не хочу, чтобы создать translatorlanguageAdmin, потому что я не хочу, чтобы форма такого же, исходя из транслятора или языка (как это может быть сделано с простыми многими ко многим картографирования)
Do Мне нужно связать запрос и шаблон с showMapper? Или мне что-то не хватает?
общий вопрос: почему бы вам не создать много-ко-многим между языком и переводчиком и добавить сайты к вашему переводчику? – nifr
Потому что это не значит то же самое, что я думаю, я хочу связать ассоциации переводчика с языком, а не переводчиком со всеми его языками. – copndz
, тогда вы должны создать много-ко-многим между языком переводчика -> язык и язык боков и переводчиков ->. переводчик может иметь языки, на которых он способен или может переводить, на сайте могут быть разные языки и разные переводчики .. нет необходимости в четвёртом объекте translationSite, просто усложняет ситуацию :) – nifr