Symfony2获取另一个实体中一个实体的实体

用户名

这个问题是关于使用ORM的Symfony2表关系的。我有三个相互关联的表/实体。该关系与Wordpress帖子,类别和类别关系表非常相似。

表1包含帖子。表2包含类别表3包含类别和职位之间的关系。

我希望能够在posts表中具有Categories属性,而在Categories表中具有posts属性。这样我打电话的时候。

Categories-> posts:我应该在该类别中获取帖子。Posts-> categories:我应该获取帖子所属的类别。

我希望每个表具有唯一的类别,并且我希望所有帖子都指向一个类别,而不必为ManyToOne或OneToMany提供的类别创建一个新条目,这就是为什么我认为有必要使用第三个表格的原因。

例如,这里是关系

class Category_relationship
{

    /**
     * @var integer
     *
     * @ORM\Column(name="object_id", type="bigint")
     *
     * @ORM\ManyToOne(targetEntity="Worksheet",         inversedBy="category_relationships")
     * @ORM\JoinColumn(name="worksheet_id", referencedColumnName="id", nullable=FALSE)
     */
    private $objectId;

    /**
     * @var integer
     *
     * @ORM\Column(name="category_id", type="bigint")
     *
     * @ORM\ManyToOne(targetEntity="Category", inversedBy="categories")
     * @ORM\JoinColumn(name="category_id", referencedColumnName="id", nullable=FALSE)
     */
    private $categoryId;

}

这是Category类:

class Category
{
    /**
     * @ORM\OneToMany(targetEntity="Category_relationship", mappedBy="categoryId", cascade={"persist", "remove"}, orphanRemoval=TRUE)
     */
    protected $posts;
}

这是Category类:

class Posts
{    /**
     * @ORM\OneToMany(targetEntity="Category_relationship", mappedBy="objectId", cascade={"persist", "remove"}, orphanRemoval=TRUE)
     */
    protected $categories;
}

我想创建一个系统,可以在其中分配帖子到某个类别,但是类别表只能包含有关该类别的1个条目。我还希望能够使用表达式链接;

帖子->类别类别->帖子

或者

Post-> AddCategory()类别-> AddPost()

谢谢你的帮助。

马特乌斯·西普(Mateusz Sip)

似乎您想要一个简单的多对多关系。

每个帖子可以有多个类别,每个类别都有相关帖子的列表。多对多本身可以处理数据透视表。

因此,在Post实体中,您必须以这种方式声明关系:

/**
 * @ORM\ManyToMany(targetEntity="Category", inversedBy="posts")
 * @ORM\JoinTable(name="PostsCategories",
 *      joinColumns={@ORM\JoinColumn(name="post_id", referencedColumnName="id")},
 *      inverseJoinColumns={@ORM\JoinColumn(name="category_id", referencedColumnName="id")}
 *      )
 **/
protected $categories;

请记住,将Doctrine \ ORM \ Mapping与ORM别名一起使用(您不必分别导入所有子类):

use Doctrine\ORM\Mapping as ORM;

之后,您需要在类构造函数中创建一个新的ArrayCollection:

public function __construct()
{
    $this->categories = new ArrayCollection();
}

并添加适当的方法,例如addCategory:

public function addCategory(Category $category)
{
    $this->categories[] = $category;

    return $this;
}

您还可以使用以下方法自动添加它们:

php app/console doctrine:generate:entities BundleName:EntityName

类别实体中的内容相同,但定义有所不同:

 /**
 * @ORM\ManyToMany(targetEntity="Post", mappedBy="categories")
 **/
protected $posts;

您可以在Doctrine文档中找到所有这些信息。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Symfony2上添加与另一个特定实体相关的新实体

来自分类Dev

Symfony2从与另一个oneToMany相关的实体oneToMany获取值

来自分类Dev

Symfony2 FOSUserBundle自动关联到另一个实体

来自分类Dev

从Symfony2中的表单检索另一个实体

来自分类Dev

另一个实体的symfony2 php访问对象

来自分类Dev

Symfony-从另一个实体中获取实体

来自分类Dev

一个实体与另一个实体具有2个ManyToOne关系

来自分类Dev

Symfony - 在另一个实体上存储数据

来自分类Dev

教义实体扩展另一个实体

来自分类Dev

通过另一个实体的关系查找实体

来自分类Dev

symfony2错误分支“扩展了另一个模板的模板无法拥有实体”

来自分类Dev

symfony实体:在属性/ to_string方法中使用另一个实体属性

来自分类Dev

QueryDSL以获取另一个实体集合中的任何实体

来自分类Dev

Symfony 2以另一个Entiy形式创建实体

来自分类Dev

Hibernate:如何根据特定条件从另一个实体中获取或加载一个惰性实体?

来自分类Dev

根据另一个联接的实体字段值查询一个实体

来自分类Dev

在Hibernate中用另一个引用的实体插入/更新一个实体

来自分类Dev

如何使用Dcotrine冲洗一个实体而不冲洗另一个实体?

来自分类Dev

尝试将一个实体与另一个实体关联会导致插入

来自分类Dev

根据另一个联接的实体字段值查询一个实体

来自分类Dev

如何使用Dcotrine冲洗一个实体而不冲洗另一个实体?

来自分类Dev

在Hibernate中用另一个引用的实体插入/更新一个实体

来自分类Dev

为一个实体而不是另一个实体阻止 EntityManager

来自分类Dev

创建一个包含另一个现有实体的新实体

来自分类Dev

原则2:通过关联的另一个实体的属性对关联的实体进行排序

来自分类Dev

指向同一实体的外键,其中一个必需,另一个可选

来自分类Dev

与一个实体Symfony2共享同一OneToMany关系的两个属性

来自分类Dev

Symfony2:对一个实体属性使用两个表单字段?

来自分类Dev

CRM 2011 PLUGIN更新另一个实体

Related 相关文章

  1. 1

    在Symfony2上添加与另一个特定实体相关的新实体

  2. 2

    Symfony2从与另一个oneToMany相关的实体oneToMany获取值

  3. 3

    Symfony2 FOSUserBundle自动关联到另一个实体

  4. 4

    从Symfony2中的表单检索另一个实体

  5. 5

    另一个实体的symfony2 php访问对象

  6. 6

    Symfony-从另一个实体中获取实体

  7. 7

    一个实体与另一个实体具有2个ManyToOne关系

  8. 8

    Symfony - 在另一个实体上存储数据

  9. 9

    教义实体扩展另一个实体

  10. 10

    通过另一个实体的关系查找实体

  11. 11

    symfony2错误分支“扩展了另一个模板的模板无法拥有实体”

  12. 12

    symfony实体:在属性/ to_string方法中使用另一个实体属性

  13. 13

    QueryDSL以获取另一个实体集合中的任何实体

  14. 14

    Symfony 2以另一个Entiy形式创建实体

  15. 15

    Hibernate:如何根据特定条件从另一个实体中获取或加载一个惰性实体?

  16. 16

    根据另一个联接的实体字段值查询一个实体

  17. 17

    在Hibernate中用另一个引用的实体插入/更新一个实体

  18. 18

    如何使用Dcotrine冲洗一个实体而不冲洗另一个实体?

  19. 19

    尝试将一个实体与另一个实体关联会导致插入

  20. 20

    根据另一个联接的实体字段值查询一个实体

  21. 21

    如何使用Dcotrine冲洗一个实体而不冲洗另一个实体?

  22. 22

    在Hibernate中用另一个引用的实体插入/更新一个实体

  23. 23

    为一个实体而不是另一个实体阻止 EntityManager

  24. 24

    创建一个包含另一个现有实体的新实体

  25. 25

    原则2:通过关联的另一个实体的属性对关联的实体进行排序

  26. 26

    指向同一实体的外键,其中一个必需,另一个可选

  27. 27

    与一个实体Symfony2共享同一OneToMany关系的两个属性

  28. 28

    Symfony2:对一个实体属性使用两个表单字段?

  29. 29

    CRM 2011 PLUGIN更新另一个实体

热门标签

归档