Я понимаю выгоду или хранилище шаблона, но я просто не могу понять, в Symfony3 Доктрине есть Doctrine\ORM\EntityManager
и \Doctrine\ORM\EntityRepository
Symfony Доктрина диспетчер объектов и репозиторий
- Какие различия между этими двумя?
Следует ли вводить репозиторий в контроллер или диспетчер объектов?
Редактировать Правильный вопрос должен быть: Каким образом можно получить доступ к репозиторию с контроллера?
- Следует ли вводить репозиторий в контроллер как услугу?
- Следует ли вводить репозиторий в другую службу в качестве услуги?
Должен ли администратор сущности содержать любой запрос вообще?
Редактировать Правильный вопрос должен быть: должен ли сервис содержать запрос вообще? Какой @MateuszSip уже объяснил, это можно сделать, вставив Entity ManagerЕсли в будет помещена пользовательская функция, например, репозиторий или услуги? (Где
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'? Спасибо и извините, если слишком много вопросов. –