Auditable behavioral implementation helps tracking changes and history of objects. Fast and lightweight alternative for DoctrineExtensions Loggable with some features. Supports only ORM.
- Group of changes
- Comments for changes
- Convenient store (tracked values before and after change stored in the separated columns, instead serialized entity data in the Loggable)
- Supports custom DBAL types
- Supports class inheritance configuration
- Install bundle
composer require "gtt/doctrine-auditable-bundle"
- Add to AppKernel.php
public function registerBundles()
{
$bundles = array(
...
new Gtt\Bundle\DoctrineAuditableBundle\DoctrineAuditableBundle(),
);
...
}
- Create tables for changes storing
app/console doctrine:schema:update --force
- Configure mapping if needed.
Add annotation for tracking property
<?php
use Gtt\Bundle\DoctrineAuditableBundle\Mapping\Annotation as Auditable;
/**
* My entity
*
* @ORM\Entity
* @ORM\Table(name="entity")
*
* @Auditable\Entity
*/
class Entity
{
/**
* Name
*
* @var string
*
* @ORM\Column(type="string", name="name", length=255)
*
* @Auditable\Property
*/
protected $assignedUser;
...
}
If you need comment changes then add property for comment and add annotation attribute to the entity
/**
* My entity
*
* @ORM\Entity
* @ORM\Table(name="entity")
*
* @Auditable\Entity(commentProperty="comment")
*/
class Entity
{
...
private $comment;
...
public function setComment($comment)
{
$this->comment = $comment;
return $this;
}
public function getComment()
{
return $this->comment;
}
}
Set you comment
...
$entity->setName('Any name');
$entity->setComment('Set any name to the entity');
$entityManager->flush();
...