我理解的利益或倉庫的模式,但我不能在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'有什麼意義呢?感謝並抱歉,如果問題太多 –