我理解的利益或仓库的模式,但我不能在Symfony3主义理解有Doctrine\ORM\EntityManager
和\Doctrine\ORM\EntityRepository
Symfony的学说实体管理器和库
- 是两者有何区别?
存储库是否应该注入控制器或实体管理器?
编辑 正确的问题应该是:什么是从控制器访问存储库的正确方法?
- 存储库是否应作为服务注入控制器?
- 存储库是否应作为服务注入另一个服务?
实体管理器是否应该包含任何查询?
编辑 正确的问题应该是:一个服务应该包含查询吗?其中@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.
}
感谢您的回答。为了您的观点4.服务访问存储库如何?是通过注射吗?还是通过' - > entityManager-> getRepository'? –
您可以将存储库定义为服务并将其注入到服务中。 –
如果我将我的存储库定义为服务,为什么需要将其注入另一个服务?我不应该只是将存储库作为服务注入控制器吗?另外如果我使用注入,那么' - > entityManager-> getRepository'有什么意义呢?感谢并抱歉,如果问题太多 –