检测到服务“doctrine.dbal.default_connection”的循环引用,路径:“doctrine.dbal.default_connection”

Ale*_*122 2 php doctrine symfony doctrine-orm

当我尝试将该服务@doctrine.orm.entity_manager作为我的 listener 的参数时发生错误UserDeletionListener

我的服务:

se.doctrine_listener.user_deletion:
        class: SE\CoreBundle\DoctrineListener\UserDeletionListener
        arguments:
              - "@doctrine.orm.entity_manager"
        tags:
            - { name: doctrine.event_listener, event: preRemove }
Run Code Online (Sandbox Code Playgroud)

我的听众:

namespace SE\CoreBundle\DoctrineListener;

use Doctrine\Common\Persistence\Event\LifecycleEventArgs;
use Doctrine\ORM\EntityManager;
use SE\UserBundle\Entity\User;

class UserDeletionListener
{
    /**
     * @var \Doctrine\ORM\EntityManager
     */
    private $em;

    public function __construct(EntityManager $entityManager)
    {
        $this->em = $entityManager;
    }
/...
Run Code Online (Sandbox Code Playgroud)

这是错误:

Circular reference detected for service "doctrine.dbal.default_connection", path: "doctrine.dbal.default_connection".
Run Code Online (Sandbox Code Playgroud)

小智 5

当您使用 EventArgs {lifecycle, preUpdate, etc...] 时,您不必再通过 Doctic.orm.entity_manager :-D 您可以通过 eventArgs 本身的 getEntityManager 方法获取它