在Doctrine 2.1中似乎有一种观点,即返回子集并不容易 协会的集合。
文档建议编写一个存储库查找方法,这是有道理的,因为这是我做的第一件事。
然而,如果没有在实体中引用EntityManager,我就看不到你将如何检索关联的存储库,这似乎打败了将域与数据库分离的观点?
这个问题是否有推荐的策略?
以下是我对他们建议的解决方案的解释。
class Category
{
protected $id;
protected $articles; // PesistentCollection
protected $em; // The EntityManager from somewhere?
public function getVisableArticles()
{
return $this->em->getRepository('Article')
->getVisibleByCategory($this);
}
}
答案 0 :(得分:1)
我会做什么:
class Category
{
protected $id;
protected $articles; // PesistentCollection
public function getVisableArticles(IArticleRepository $articleRepository)
{
return $articleRepository->getVisibleByCategory($this);
}
}
interface IArticleRepository
{
function getVisibleByCategory(Category $category);
}
您的学说库将实现IArticleRepository,并且该类不会对您的数据存储/学说有任何了解。