Skip to content

Instantly share code, notes, and snippets.

@trbsi
Last active August 14, 2018 10:00
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save trbsi/4f12aa80dfed605948e6ad64ec94f963 to your computer and use it in GitHub Desktop.
Save trbsi/4f12aa80dfed605948e6ad64ec94f963 to your computer and use it in GitHub Desktop.
Entity Listener example
#UserBundle/Resources/config/services.yml
services:
user_listener:
class: Domena\UserBundle\Listener\UserListener
tags:
- { name: doctrine.orm.entity_listener }
/**
* @ORM\EntityListeners({"Domena\UserBundle\Listener\UserListener"})
*/
class User extends AbstractUser implements UserSecurityInterface
{}
<?php
namespace Domena\UserBundle\Listener;
use Doctrine\ORM\Event\LifecycleEventArgs;
use Doctrine\ORM\Event\PreFlushEventArgs;
use Doctrine\ORM\Event\PreUpdateEventArgs;
use Doctrine\ORM\Mapping as ORM;
use Domena\UserBundle\Entity\Main\User;
/**
* PrePersist/PostPersist is fired only when you are performing INSERT statement, not UPDATE statement.
* When testing, don't forget that the UPDATE statement is fired only when the entity attributes really change. If the Entity Manager is being called to persist that entity, it first looks if there are any changes. If not, no sql query is performed and no @PreUpdate method is called.
*
* Class UserListener
* @package Domena\UserBundle\Listener
*/
class UserListener
{
/**
* @param User $user
* @param LifecycleEventArgs $event
*/
public function postPersist(User $user, LifecycleEventArgs $event)
{
dump('postPersist');
}
/**
* @param User $user
* @param LifecycleEventArgs $event
*/
public function preFlush(User $user, PreFlushEventArgs $event)
{
dump('preFlush');
}
/**
* @param User $user
* @param LifecycleEventArgs $event
*/
public function postUpdate(User $user, LifecycleEventArgs $event)
{
dump('postUpdate');
}
/**
* @param User $user
* @param LifecycleEventArgs $event
*/
public function preUpdate(User $user, PreUpdateEventArgs $event)
{
dump('preUpdate');
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment