laravel-activitylog เป็น package สำหรับใช้จัดเก็บ log การใช้งานของ user ยิ่งไปกว่านั้น package นี้สามารถเก็บ log จาก model event ได้โดยอัตโนมัติ
วิธีการติดตั้ง
- สั่งติดตั้ง laravel-activitylog package
composer require spatie/laravel-activitylog
- สร้างไฟล์ migration ของ package ใน project
php artisan vendor:publish --provider="Spatie\Activitylog\ActivitylogServiceProvider" --tag="migrations"
- รัน migrate เพื่อสร้างตารางในฐานข้อมูล
php artisan migrate
- สร้างไฟล์ config ของ package ใน project
php artisan vendor:publish --provider="Spatie\Activitylog\ActivitylogServiceProvider" --tag="config"
วิธีการตั้งค่า Laravel model เพื่อเก็บ activity log
- สร้าง class BaseModel เพื่อเป็น base class สำหรับ Laravel model
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Spatie\Activitylog\Traits\LogsActivity;
class BaseModel extends Model
{
use LogsActivity;
protected static $logAttributes = [];
protected static $logFillable = true;
protected static $logOnlyDirty = true;
}
โดยที่
$logAttributes
เป็น array ของ attributes ที่จะถูก log เมื่อมีการเปลี่ยนแปลงสำหรับทุก events ไม่ว่าจะเป็น created, updated และ deleted
$logFillable
เป็นการตั้งค่าให้เก็บ log ทุก attributes ใน $fillable
$logOnlyDirty
เป็นการตั้งค่าให้เก็บข้อมูล properties ของ log เฉพาะส่วนที่มีการเปลี่ยนแปลง
- ใช้ BaseModel เป็น base class สำหรับ models ต่างๆ
หมายเหตุ สำหรับ attributes ที่สามารถตั้งค่าได้ ให้ดูตัวแปรที่ขึ้นต้นด้วย
static::
ใน
DetectsChanges
ตัวอย่างการใช้งาน
- เก็บ activity log ของการ login
activity()
->causedBy($user)
->withProperties([
'id' => $user->id,
'email' => $user->email,
])
->log("Login");
เรียกดู activity log รายการสุดท้าย
$lastActivity = Activity::all()->last();
No comments:
Post a Comment