我目前正在使用带有Doctrine 2的ZF 2.现在我有一个用户服务,我想用自定义存储库替换它。到目前为止,这工作得很好,但我不确定是否还应该将用于添加/附加其他实体的方法添加到此自定义存储库中。 目前驻留在用户服务中的一个示例方法是:
public function addBookmark(User $user, $userId, $videoId)
{
$author = $this->getById($userId);
$bookmarkEntity = new Bookmark();
$bookmarkEntity->setAuthor($author);
$bookmarkEntity->setUser($user);
$bookmarkEntity->setVideoId($videoId);
$user->addBookmark($bookmarkEntity);
$this->getEntityManager()->persist($bookmarkEntity);
$this->getEntityManager()->flush();
}
我认为这个功能对于存储库来说太“自定义”了。
另一种方法是将所有find方法放入自定义存储库,并让其余方法保留在服务中,同时注入存储库。但是,这种方法的缺点是我无法直接从存储库访问用户服务中的实体管理器,导致第二个依赖(实体管理器)仅用于持久化刷新。
最好的方法是什么?在此先感谢您的帮助!