[英]Get Doctrine inside Symfony 2.4 Entity Listener
我正在使用新的實體偵聽器 ,它們對於觸發它們的實體非常有用。 但是,在偵聽器中,我想從其他實體訪問數據,本質上是發出一些數據庫請求。
為此,我正在使用二傳手注射
<?php
// Project/DefaultBundle/EventListener/SomeIndexer.php
namespace Project\DefaultBundle\EventListener;
use Doctrine\ORM\Event\LifecycleEventArgs;
use Project\DefaultBundle\Entity\Document;
use Doctrine\ORM\EntityManager;
class SomeIndexer
{
protected $em;
public function setEntityManager(EntityManager $em)
{
$this->em = $em;
}
public function prePersist(Document $doc, LifecycleEventArgs $args)
{
// this is my Document entity which works fine
$entity = $args->getEntity();
$entityManager = $args->getEntityManager();
if ( $entity instanceof Document )
{
// em doesn't seem to be an object
$this->em->getRepository('ProjectDefaultBundle:SomeOtherEntity') ...
}
}
}
並在我的服務配置中
// Project/DefaultBundle/Resources/config/services.yml
services:
timeline.eventlistener.tripindexer:
class: Project\DefaultBundle\EventListener\SomeIndexer
calls:
- [setEntityManager, ["@doctrine.orm.entity_manager"]]
我有一個錯誤的假設,即$entityManager
僅適用於文檔實體。 實際上,您不需要注入任何東西,只需使用:
$repository = $entityManager->getRepository('ProjectDefaultBundle:SomeOtherEntity')...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.