PHP code example of esign / laravel-database-auditing
1. Go to this page and download the library: Download esign/laravel-database-auditing library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
esign / laravel-database-auditing example snippets
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Http\Response;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
public function up(): void
{
Schema::create('audits', function (Blueprint $table) {
$table->id();
$table->string('event');
$table->morphs('auditable');
$table->json('old_data')->nullable();
$table->json('new_data')->nullable();
$table->timestamp('created_at')->useCurrent();
$table->timestamp('updated_at')->useCurrent()->useCurrentOnUpdate();
});
}
public function down(): void
{
Schema::dropIfExists('audits');
}
};
return [
/**
* Specifies the model used by the package to retrieve audits.
*/
'model' => Esign\DatabaseAuditing\Models\Audit::class,
];
use Esign\DatabaseTrigger\DatabaseTrigger;
use Esign\DatabaseTrigger\Enums\TriggerEvent;
use Esign\DatabaseTrigger\Enums\TriggerTiming;
use Esign\DatabaseTrigger\Facades\Schema;
use Illuminate\Database\Migrations\Migration;
return new class extends Migration
{
public function up(): void
{
Schema::createTrigger('audit_after_posts_insert', function (DatabaseTrigger $trigger) {
$trigger->on('posts');
$trigger->timing(TriggerTiming::AFTER);
$trigger->event(TriggerEvent::INSERT);
$trigger->statement("
insert into audits (
event,
auditable_type,
auditable_id,
old_data,
new_data
) values (
'insert',
'post',
NEW.id,
NULL,
JSON_OBJECT('title', NEW.title, 'slug', NEW.slug)
);
");
});
}
public function down(): void
{
Schema::dropTriggerIfExists('audit_after_posts_insert');
}
};
use Esign\DatabaseAuditing\Models\Audit;
$audits = Audit::query()->get();
use Esign\DatabaseAuditing\Models\Audit;
$latestAudit = Audit::latest()->first();
$latestAudit->hasDataChanges();
$latestAudit->hasDataChanges('slug');
use Esign\DatabaseAuditing\Models\Audit;
use Esign\DatabaseTrigger\Enums\TriggerEvent;
Audit::event(TriggerEvent::UPDATE)->first();
use Esign\DatabaseAuditing\Concerns\HasAudits;
use Illuminate\Database\Eloquent\Model;
class Post extends Model
{
use HasAudits;
}