我有两个数据库表
每篇文章都可以在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)。那么在哪里我可以告诉我是否需要它?
答案 0 :(得分:1)
这主要是建筑和便利的决定。
第一种情况主要是关于如何表示数据模型。是一篇文章应该知道其存档中的项目吗?或者只有档案需要知道文章?他们在数据模型中的关系如何?
第二种情况更多是关于编程的便利性:如果您需要经常访问文章的已归档项目,那么$article->getArchives()
(或其他)与通过存储库获取它们相比可能更方便一个问题。这可能与数据模型不符,因此您需要权衡这两种情况,并自己决定如何对其进行建模以及最有意义的内容。