I am using gedmo extension with doctrine2 to apply soft delete and timestampable behaviours(As they were in doctrine1 by default but for doctrine2 it comes in an extension), it is always hard deleting the record. Where as it should only set datetime in "deleted_at" column.
My entity
<?php
namespace Entities;
use Doctrine\ORM\Mapping AS ORM;
use Gedmo\Mapping\Annotation as Gedmo;
/**
* @ORM\Entity
*/
class ilook_user
{
/**
* @ORM\Id
* @ORM\Column(type="integer", length=11)
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
.
.
.
/**
* @var datetime $created_at
*
* @Gedmo\Timestampable(on="create")
* @ORM\Column(type="datetime")
*/
private $created_at;
/**
* @var datetime $updated_at
*
* @Gedmo\Timestampable(on="update")
* @ORM\Column(type="datetime")
*/
private $updated_at;
/**
* @ORM\Column(name="deleted_at", type="datetime", nullable=true)
*/
private $deleted_at;
Method I am using to remove record :
public static function softDeleteUser($user_id)
{
//Delete user
$em = \Zend_Registry::get('em');
$usr_obj = $em->find('\Entities\ilook_user', $user_id);
$em->remove($usr_obj);
$em->getConnection()->close();
$em->flush();
return TRUE;
}
The loading of gedmo extension lib :
$classLoader = new \Doctrine\Common\ClassLoader('Gedmo', realpath(__DIR__ . '/../library/'), 'loadClass');
$classLoader->register();
$autoloader->pushAutoloader(array($classLoader, 'loadClass'), 'Gedmo');
Gedmo\DoctrineExtensions::registerAbstractMappingIntoDriverChainORM(
$driverChain, // our metadata driver chain, to hook into
$cachedAnnotationReader // our cached annotation reader
);
// timestampable
$timestampableListener = new Gedmo\Timestampable\TimestampableListener;
$timestampableListener->setAnnotationReader($cachedAnnotationReader);
$evm->addEventSubscriber($timestampableListener);
// SoftDeleteable
$softDeleteableListener = new Gedmo\SoftDeleteable\SoftDeleteableListener;
$softDeleteableListener->setAnnotationReader($cachedAnnotationReader);
$evm->addEventSubscriber($softDeleteableListener);
I am sure that gedmo lib has been integrated properly because timestamplable features are working.