Laravel Activitylog - Ghi lại hoạt động nguời dùng trong Laravel
Bài đăng này đã không được cập nhật trong 7 năm
Laravel Activitylog
1. Giới thiệu
spatie/laravel-activity
là một thư viện được cung cấp hỗ trợ các việc lưu lại hoạt động của người dùng trong dự án của bạn. Nó sẽ tự động tạo những sự kiện để lưu trữ lại trong model của dự án. Mọi hoạt động sẽ được lưu trữ trong bảng activity_log
.
VD:
activity()->log('Look mum, I logged something');
Để lấy tất cả bản ghi của table activitiy_log
bạn cần sử dụng:
Spatie\Activitylog\Models\Activity
Activity::all();
Hoặc bạn có thể tham khảo thêm các ví dụ trong event logging.
Để xem thay đổi các thuộc tính của một bản ghi:
$activity->changes
[
'attributes' => [
'name' => 'original name',
'text' => 'Lorum',
],
'old' => [
'name' => 'updated name',
'text' => 'Lorum',
],
];
2. Yêu cầu cài đặt
activitylog
yêu cầu bắt buộc dùng PHP 7.0+
và Laravel 5.2 hoặc hơn
.
Nếu bạn đang dùng laravel 5.xx hãy xem https://github.com/spatie/activitylog .
3. Cài đặt
Sử dụng composer
composer require spatie/laravel-activitylog
Tiếp theo cần thêm provider vào file config/app.php
// config/app.php
'providers' => [
...
Spatie\Activitylog\ActivitylogServiceProvider::class,
];
Tiếp theo là gõ lệnh sau để sinh ra model + table trong laravel
php artisan vendor:publish --provider="Spatie\Activitylog\ActivitylogServiceProvider" --tag="migrations"
Và chạy lệnh php artisan migrate
.
Hoặc bạn cũng có thể tùy chỉnh config bằng cach:
php artisan vendor:publish --provider="Spatie\Activitylog\ActivitylogServiceProvider" --tag="config"
Và đây là nội dung file config
return [
/*
* When set to false, no activities will be saved to database.
*/
'enabled' => env('ACTIVITY_LOGGER_ENABLED', true),
/**
* When running the clean-command all recording activities older than
* the number of days specified here will be deleted.
*/
'delete_records_older_than_days' => 365,
/**
* When not specifying a log name when logging activity
* we'll using this log name.
*/
'default_log_name' => 'default',
/**
* You can specify an auth driver here that gets user models.
* When this is null we'll use the default Laravel auth driver.
*/
'default_auth_driver' => null,
/**
* When set to true, the subject returns soft deleted models.
*/
'subject_returns_soft_deleted_models' => false,
/**
* This model will be used to log activity. The only requirement is that
* it should be or extend the Spatie\Activitylog\Models\Activity model.
*/
'activity_model' => \Spatie\Activitylog\Models\Activity::class,
];
4. Cách sử dụng cơ bản
1. Base
Như đã nói ở trên thì:
activity()->log('Look mum, I logged something');
đây là câu lệnh đơn giản nhất đê ghi lại một bản ghi hoạt động trong dự án của bạn.
Và lấy tất cả dữ liệu hoạt động của bạn bằng:
$lastActivity = Activity::all()->last(); //returns the last logged activity
$lastActivity->description; //returns 'Look mum, I logged something';
2. Cài đặt loại hành động
Bạn có thể chỉ định đối tượng nào hoạt động được thực hiện bằng cách sử dụng performedOn
:
activity()
->performedOn($someContentModel)
->log('edited');
$lastActivity = Activity::all()->last(); //returns the last logged activity
$lastActivity->subject; //returns the model that was passed to `performedOn`;
3. Cài đặt điều kiện
Bạn có thể thiết lập ai là người tạo ra hoạt động này bằng cách sử dụng method causeBy
:
activity()
->causedBy($userModel)
->performedOn($someContentModel)
->log('edited');
$lastActivity = Activity::all()->last(); //returns the last logged activity
$lastActivity->causer; //returns the model that was passed to `causedBy`;
5. Kết luận
Activitylog
là một thư viện có sẵn trong laravel hỗ trợ dev trong việc quản lý sự thay đổi của dữ liệu trong ứng dụng, có thể biết được ai là người sửa xóa một dữ liệu và hỗ trợ mạnh trong việc lấy lại bản ghi trước đó.
Cám ơn bạn đã theo dõi.
Nguồn:
All rights reserved