Doctrine 2.1 中似乎存在一个疏忽,即返回子集并不容易
为协会收集。
http://www.doctrine-project.org/docs/orm/2.1/en/reference/limitations-and-known-issues.html#retricing-associations
文档建议编写一个存储库查找方法,这是有道理的,因为这是我想做的第一件事。
但是,如果没有对实体内的 EntityManager 的引用,我无法看到如何检索关联的存储库,这似乎违背了将域与数据库分离的点?
对于这个问题有推荐的策略吗?
这是我对他们建议的解决方案的解释。
class Category
{
protected $id;
protected $articles; // PesistentCollection
protected $em; // The EntityManager from somewhere?
public function getVisableArticles()
{
return $this->em->getRepository('Article')
->getVisibleByCategory($this);
}
}
- 无论如何,在实体中拥有实体管理器都不是一件好事
(改为注入您的存储库)
- 类别并不是文章的唯一根,因为它无法确定您需要哪些文章,因此您需要一个文章存储库。
我会做什么:
class Category
{
protected $id;
protected $articles; // PesistentCollection
public function getVisableArticles(IArticleRepository $articleRepository)
{
return $articleRepository->getVisibleByCategory($this);
}
}
interface IArticleRepository
{
function getVisibleByCategory(Category $category);
}
您的学说的存储库将实现 IArticleRepository,并且该类不会了解有关您的数据存储/学说的任何信息。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)