2015-01-20 3 views
1

Я создал пакет блога в том, что создаю следующий объект.Как сопоставить многие и многие отношения в форме symfony2?

1.post 
2.postcategoryinfo 
3.posttaginfo 
4.category 
5.tag 

В почтовой форме есть категория и тег multi selection drop down in form no field in post entity.

После того, как сообщение создало несколько категорий и несколько тегов, выберите один и тот же пост. И что запись делается в postcategoryinfo таблице для категории отображения, как:

IN POST 1 I SELECT 2 CATEGORY 

IN post TABLE ID 1 INSERTED 
id name 
1  Post1 

IN postcategoryinfo TABLE 
post_id category_id 
1   1 
1   2 

same way in posttaginfo tabel 
post_id tag_id 
1   1 
1   2 

Как я могу сделать связь между этим три таблицы в почтовой форме.

Во время редактирования, как я могу сделать эту категорию и тег выбранными в раскрывающемся списке.

+0

Весь смысл многих для многих заключается в том, что у вас может быть несколько категорий и тегов за сообщение. Выпадающее меню, напротив, позволяет выбрать только один. – andy

ответ

2

в сообщении Entity следующем поле нужно добавить:

/** 
    * @ORM\ManyToMany(targetEntity="Com\YourBundle\Entity\Category", inversedBy="postcatagory") 
    * @ORM\JoinTable(name="postcategoryinfo", 
    *  joinColumns={@ORM\JoinColumn(name="post_id", referencedColumnName="id")}, 
    *  inverseJoinColumns={@ORM\JoinColumn(name="category_id", referencedColumnName="id")} 
    *  ) 
    */ 
    private $category; 

    /** 
    * @ORM\ManyToMany(targetEntity="Com\YourBundle\Entity\Tag", inversedBy="posttag") 
    * @ORM\JoinTable(name="posttaginfo", 
    *  joinColumns={@ORM\JoinColumn(name="post_id", referencedColumnName="id")}, 
    *  inverseJoinColumns={@ORM\JoinColumn(name="tag_id", referencedColumnName="id")} 
    *  ) 
    */ 
    private $tag; 

В вашей категории объекта:

/** 
    * @ORM\ManyToMany(targetEntity="Com\YourBundle\Entity\Post", mappedBy="category") 
    */ 
    private $postcategory; 

в теге объекта:

/** 
    * @ORM\ManyToMany(targetEntity="Com\YourBundle\Entity\Post", mappedBy="tag") 
    */ 
    private $posttag; 

В вашем postType:

 ->add('category', NULL, array(
      'label' => 'Category', 
      'class' => 'YourBundle:Category', 
      'property' => 'category_name', // Whatever your field name 
     })) 
    ->add('tag', NULL, array(
      'label' => 'Tag', 
      'class' => 'YourBundle:Tag', 
      'property' => 'tag_name', // Whatever your field name 
     })) 

Теперь вы можете визуализировать свою почтовую форму на ветке на своем пути. Он будет выполнять свою работу по созданию и редактированию с помощью мультикоманды.

Смежные вопросы