【问题标题】:How to map many to many relationship in symfony2 form?如何以 symfony2 形式映射多对多关系?
【发布时间】:2015-01-20 15:26:34
【问题描述】:

我已经创建了博客包,其中我创建了以下实体。

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

在帖子表单中有类别和标签多选下拉表单在帖子实体中没有字段。

一旦帖子创建了多个类别和多个标签,请在同一个帖子中选择。该条目在 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

我怎样才能以帖子形式在这三个表之间建立关系。

在编辑时,我如何在下拉列表中选择此类别和标签。

【问题讨论】:

  • 多对多的重点是每个帖子可以有多个类别和标签。相比之下,下拉菜单只允许您选择一个。

标签: php symfony


【解决方案1】:

在您的帖子实体中需要添加以下字段:

    /**
     * @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;

在您的帖子类型中:

     ->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
       }))

现在您可以按照自己的方式在 twig 中呈现您的 Post 表单。它将在使用多选组合创建和编辑时发挥作用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-17
    • 1970-01-01
    • 2012-06-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多