我使用了4个entites:
翻译可以有多种语言。 语言可以有很多翻译。 可以为站点分配一对翻译/语言。
所以即使没有"真正的属性,我也被迫创建translator_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?或者我错过了一些简单的东西?
答案 0 :(得分:5)
我发现了一篇关于这个主题的非常好的帖子,希望这会对我有所帮助: http://www.prowebdev.us/2012/07/symfnoy2-many-to-many-relation-with.html