与Doctrine的关联映射

时间:2015-10-26 20:41:15

标签: symfony doctrine-orm entity-relationship

我有两个实体:

用户和 评论

每个评论只能有一个用户,但用户可以有多个评论。

我不确定是否要使用双向,单向连接表或自引用。

我只想在调用comment对象时应用这种关系。如果我在某处调用用户对象,我不希望一堆注释对象充斥用户对象。我应该采取哪种方法?

1 个答案:

答案 0 :(得分:0)

Symfony的文档很好地解释了这个过程:http://symfony.com/doc/current/book/doctrine.html#fetching-related-objects

  

重要的是你可以轻松访问   产品的相关类别,但实际上并不是类别数据   检索,直到你要求类别(即它是“懒惰加载”)。

只需建立一个ManyToOne关系,只在需要时获取用户的评论。

User实体:

<?php
class User
{
    // ...

    /**
     * @ORM\OneToMany(targetEntity="Comment", mappedBy="author")
     */
    protected $comments;

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

Comment实体:

<?php
class Comment
{
    // ...

    /**
     * @ORM\ManyToOne(targetEntity="User", inversedBy="comments")
     * @ORM\JoinColumn(name="user_id", referencedColumnName="id")
     */
    protected $author;
}