É sempre importante ter o histórico de alterações dos registros no sistema. O Auditing faz exatamente isso de forma simples e prática, bastando você extende-lo na model que gostaria de registrar o log de alterações.
Auditing é baseado no package revisionable
Auditing é instalado via composer, os detalhes estão em packagist, aqui.
Execute o seguinte comando para obter a versão mais recente do pacote:
composer require owen-it/laravel-auditing
Em seu arquivo config/app.php
adicione OwenIt\Auditing\AuditingServiceProvider::class
no final da lista de providers
:
'providers' => [
...
OwenIt\Auditing\AuditingServiceProvider::class,
],
Não deixe de registrar o provider, pois ele é requisito para as proximas etapas.
Publique as configurações usando o comando a seguir:
php artisan vendor:publish
Agora vc precisa executar a migration para criar a tabela 'logs' na sua base de dados, é nesta tabela que serão registrados os logs.
php artisan migrate
Para registrar o log de alterações, simplesmente adicione a trait OwnerIt\Auditing\AuditingTrait
no model que deseja auditar, exemplo:
namespace MyApp\Models;
use OwenIt\Auditing\AuditingTrait;
class Pessoa extends Eloquent
{
use AuditingTrait;
...
}
Traits exigem PHP >= 5.4
Para manter o log das alterações do seu model usando Legacy class, você pode estender a class OwnerIt\Auditing\Auditing
, exemplo:
namespace MyApp\Models;
use OwenIt\Auditing\Auditing;
class Pessoa extends Auditing
{
...
}
Observe que também trabalha com models namespaced.
As configurações do comportamento do Auditing são realizadas com a declaração de atributos na model. Veja os exemplos abaixo:
- Desativar o log após um numero "X":
$historyLimit = 500
- Desativar/ativar o log(Auditoria):
$auditEnabled = false
- Desativar o log para campos específicos:
$dontKeep = ['campo1', 'campo2']
namespace MyApp\Models;
class Pessoa extends Eloquent
{
use OwenIt\Auditing\AuditingTrait;
protected $auditEnabled = false; //Desativa o registro de log nesta model.
protected $historyLimit = 500; //Desativa o registro de log após 500 registros.
protected $dontKeep = ['cpf', 'nome']; //Informe os campos que deseja NÃO registrar no log.
}
namespace App\Http\Controllers;
use App\Pessoa;
class MyAppController extends BaseController
{
public function index()
{
$pessoa = Pessoa::find(1);
...
}
...
}
Localizando todos os logs
$pessoa->logs;
Localiza o primeiro registro de log criado
$pessoa->logs->first();
Localiza o último registro de log criado
$pessoa->logs->last();
Selecionando registro de log
$pessoa->logs->find(2);
Exibindo valores registrados
$log = $pessoa->logs->first();
$newValue = $log->new_value; ou $log->new;
$oldValue = $log->old_value; ou $log->old;
Localizando dono do log
use OwenIt\Auditing\Log;
$log = Log::find(1);
$owner = $log->owner;
Contribuições são bem-vindas; para manter as coisas organizadas, todos os bugs e solicitações devem ser abertas na aba issues do github para o projeto principal, no owen-it/laravel-auditing/issues
Todos os pedidos de pull devem ser feitas para o branch develop, para que possam ser testados antes de serem incorporados pela branch master.
Se você está tendo problemas com o uso deste pacote, existe probabilidade de alguém já ter enfrentado o mesmo problema. Você pode procurar respostas comuns para os seus problemas em: