【发布时间】:2016-08-06 19:29:18
【问题描述】:
我有一个名为“投票”的实体,我需要在此类中使用教义来执行一些操作,以将此类中的值集成到 EasyAdmin 捆绑显示列表中。
我的 services.yml 中有这个:
app.user:
class: AppBundle\Entity\Vote
calls:
- ['setMe', ["doctrine.orm.entity_manager"]]
这在我的课堂上:
public function setMe($entityManager) {
$this->em = $entityManager;
}
但是 setMe() 永远不会被调用(我正在使用 xdebug)。
所以,我尝试过:
app.user:
class: AppBundle\Entity\Vote
calls:
- ['setMe', ["doctrine.orm.entity_manager"]]
arguments: ["@doctrine.orm.entity_manager"]
和
public function __construct(\Doctrine\ORM\EntityManager $em){
$this -> date = new \DateTime();
$this -> em = $em;
}
但结果相同:$this->em 未设置。
我的错误在哪里?
【问题讨论】:
-
你的第一个错误是认为配置 Symfony 容器会神奇地导致注入发生。只有当您从容器中拉出实体时,容器才会起作用,这在 Doctrine 2 中不会发生。您的第二个错误是首先尝试注入实体管理器。 Doctrine 2 实体不是活动记录实体。将功能移动到服务类或切换到活动记录库。