我了解好处或存储库模式,但我只是无法理解 Symfony3 Doctrine 中存在Doctrine\ORM\EntityManager
和\Doctrine\ORM\EntityRepository
- 两者有什么区别?
存储库是否应该注入控制器或实体管理器?
编辑 正确的问题应该是:从控制器访问存储库的正确方法是什么?
- 是否应该将存储库作为服务注入控制器?
- 是否应该将存储库作为服务注入另一个服务?
实体管理器是否应该包含任何查询?
编辑 正确的问题应该是:服务是否应该包含查询?@MateuszSip 已经解释过,可以通过注入实体管理器来完成是否应该将自定义功能(例如
getAvailableManagers
)放入存储库或服务中?(manager
存储库在哪里,确定有一些逻辑available manager
)- 更通用的功能怎么样
findAllManager
,应该在存储库还是实体管理器中?
目前我正在使用 Symfony3。非常感谢
干杯,
编辑 与@MateuszSip 交谈(感谢伙伴),我决定用下面的例子让我的问题更清楚。请注意,下面的代码并不代表真正的问题
控制器
Class ManagementController
{
public function assignManager($projectType)
{
// Grabbing a service
$s = $this->get('mycompany_management_management_service')
$managers = $s->findAvailableManagers();
$managers = $s->checkCapability($managers, $projectType);
return $managers
}
}
存储库
class ManagerRepository extends \Doctrine\ORM\EntityRepository
{
public function findAvailableManagers()
{
...
return $managers
}
public function checkCapability($managers, $type)
{
...
return $capableManagers
}
}
服务
class ManagementService
{
... I am not sure what should be here.
}