我有两个数据库表
- 文章
- 存档
每篇文章在Archive表中可以有多条记录。
这就是存档实体的样子(显示仅用于理解问题)
/**
* Archive
*
* @ORMTable(name="archive")
* @ORMEntity
*/
class Archive
{
.....................................................
/**
* @var Articles
*
* @ORMManyToOne(targetEntity="Articles")
* @ORMJoinColumns({
* @ORMJoinColumn(name="article_id", referencedColumnName="id")
* })
*/
private $article;
.....................................................
/**
* Set article
*
* @param Articles $article
* @return Archive
*/
public function setArticle(EntitiesArticles $article = null)
{
$this->article = $article;
return $this;
}
/**
* Get article
*
* @return Articles
*/
public function getArticle()
{
return $this->article;
}
....................................................
}
在本实体中有对文章实体的引用,但在文章实体中没有对档案实体的引用。
所以问题是——我需要参考文章中的存档实体吗?它有什么好处和缺点?据我所知,有很多推荐信是不好的(http://docs.doctrine-project.org/en/latest/reference/best-practices.html#constrain-尽可能多的关系)。那么,我在哪里可以判断我是否需要它呢?
这主要是架构和便利性的决定。
- Article是否需要了解存档条目
- 我需要通过文章访问存档条目吗
第一种情况主要是关于如何表示数据模型。一篇文章应该知道它在档案中的项目吗?还是只有档案馆需要了解文章?它们在数据模型中的关系如何?
第二种情况更多的是关于编程的便利性:如果你需要经常访问文章的存档项目,那么使用$article->getArchives()
(或其他什么)比通过存储库或查询获取它们更方便。这可能与数据模型相悖,因此您需要权衡这两种情况,并自行决定如何建模以及什么最有意义。