Lenny4
Lenny4

Reputation: 1678

Circular reference detected for service "doctrine.dbal.default_connection", path: "doctrine.dbal.default_connection"

An error occurred when I tried to put the service @doctrine.orm.entity_manager as an argument for my listener UserDeletionListener.

My service:

se.doctrine_listener.user_deletion:
        class: SE\CoreBundle\DoctrineListener\UserDeletionListener
        arguments:
              - "@doctrine.orm.entity_manager"
        tags:
            - { name: doctrine.event_listener, event: preRemove }

My listener:

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;
    }
/...

Here is the error:

Circular reference detected for service "doctrine.dbal.default_connection", path: "doctrine.dbal.default_connection".

Upvotes: 3

Views: 1802

Answers (2)

Patryk Kołodziejski
Patryk Kołodziejski

Reputation: 31

Add Lazy loading to doctrine Event Listener

* - { name: doctrine.event_listener, event: preRemove, lazy: true }

Upvotes: 3

JessGabriel
JessGabriel

Reputation: 1072

when you use EventArgs {lifecycle, preUpdate, etc...], you don't have to pass doctrine.orm.entity_manager anymore :-D You can get it by the method getEntityManager of the eventArgs itself

Upvotes: 7

Related Questions