Задать вопрос
Dromok
@Dromok

Как обратиться к EntityManager из Entity? (Zend2+Doctrine2)?

Приветствую!
Решил бизнес-логику перенести в Entity.
Но непонятно как изнутри Entity обращаться к EntityManager.

Пример в контроллере:
$em = $this->getServiceLocator()->get('Doctrine\ORM\EntityManager');

$data = $form->getData();
$user = new User();
$user->setUsername($data['username']);
$user->setNotifyEmail($data['username']);
$user->setPassword($data['password']);

$em->persist($user);
$em->flush();

Это создание юзера. Хотелось бы перенести в Entity в функцию createUser. Но никак не могу понять, как там обратиться к EntityManager, так как $this->getServiceLocator()->get('Doctrine\ORM\EntityManager'); не работает.
Заранее благодарен за помощь!
  • Вопрос задан
  • 2847 просмотров
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
entity не должна содержать бизнес логики, это всего лишь отображение предметной области. Собственно по этому она не должна иметь доступа к entity manager или хоть как-то знать о том, как она храниться и обрабатывается. Бизнес логика должна храниться в сервисном слое.

У вас должен быть сервис userManager в котором и должен быть метод createUser.
Ответ написан
Комментировать
cawakharkov
@cawakharkov
Так же полезно будет использование пользовательских репозиториев вместе с сервисным слоем - документация,пост на хабре
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы