学说2关系用法

时间:2012-09-12 11:07:49

标签: php orm doctrine-orm

我有两个数据库表

  1. 文章
  2. 存档
  3. 每篇文章都可以在Archive表中有多个记录。

    这就是Archive实体的样子(仅显示需要理解的问题)

    /**
     * Archive
     *
     * @ORM\Table(name="archive")
     * @ORM\Entity
     */
    class Archive
    {
    
       .....................................................
    
       /**
         * @var Articles
         *
         * @ORM\ManyToOne(targetEntity="Articles")
         * @ORM\JoinColumns({
         *   @ORM\JoinColumn(name="article_id", referencedColumnName="id")
         * })
         */
         private $article;
    
       .....................................................
    
       /**
         * Set article
         *
         * @param Articles $article
         * @return Archive
         */
        public function setArticle(\Entities\Articles $article = null)
        {
            $this->article = $article;
            return $this;
        }
    
        /**
         * Get article
         *
         * @return Articles 
         */
        public function getArticle()
        {
            return $this->article;
        }
    
        ....................................................
    }
    

    在该实体中,对条款实体BUT的引用没有提及存档实体。

    所以问题是 - 我是否需要参考文章实体存档以及它将带来哪些好处和缺点? 据我所知,有很多引用很糟糕(http://docs.doctrine-project.org/en/latest/reference/best-practices.html#constrain-relationships-as-much-as-possible)。那么在哪里我可以告诉我是否需要它?

1 个答案:

答案 0 :(得分:1)

这主要是建筑和便利的决定。

  • 文章是否需要了解已归档的条目?
  • 我是否需要通过文章访问存档条目?

第一种情况主要是关于如何表示数据模型。是一篇文章应该知道其存档中的项目吗?或者只有档案需要知道文章?他们在数据模型中的关系如何?

第二种情况更多是关于编程的便利性:如果您需要经常访问文章的已归档项目,那么$article->getArchives()(或其他)与通过存储库获取它们相比可能更方便一个问题。这可能与数据模型不符,因此您需要权衡这两种情况,并自己决定如何对其进行建模以及最有意义的内容。