thoth-pharaoh / operation-record
操作記錄-收集器
v3.0.2
2023-02-24 11:37 UTC
Requires
- php: ^8.0
- ext-json: *
- guzzlehttp/guzzle: ^7.1
- illuminate/support: >=9.0
Requires (Dev)
- laravel/legacy-factories: ^1.0.4
- orchestra/testbench: ^7.0
This package is auto-updated.
Last update: 2025-02-24 15:49:58 UTC
README
版本匹配
Laravel | package |
---|---|
8.X | 2.X |
9.X | 3.X |
安裝
你可以使用 composer 做安裝
composer require thoth-pharaoh/operation-record
Migrate operation_records 資料表
php artisan migrate
匯出 Migration
php artisan vendor:publish --tag=operation-record-database --force
匯出 Config
php artisan vendor:publish --tag=operation-record-config --force
使用方法
使用 model 關聯:
先在要使用的 model 中 引入 HasOperationRecord trait
use Pharaoh\OperationRecord\Traits\HasOperationRecord; class User extends Model { use HasOperationRecord; }
- 操作者 Model 修改 操作對象 Model 寫紀錄
$user = new \App\Models\User; $user->operating($subject, $funcKey, $action, $old, $new, $ip);
參數 | 說明 | 類型 | 範例 |
---|---|---|---|
$subject | 操作對象 model | Model | |
$funcKey | 功能 KEY | int | 1001 |
$action | 動做 | int | 1 |
$old | 修改前內容 | array | ['title' => 'before'] |
$new | 修改後內容 | array | ['title' => 'after'] |
$ip | string | 操作者 IP | 127.0.0.1 |
$action 動作參數 請參閱 config.operation_record.action 內容
- 操作對象 Model 被 操作者 Model 修改 寫紀錄
$post = new \App\Models\Post; $post->operatedBy($operator, $funcKey, $action $old, $new, $ip);
參數 | 說明 | 類型 | 範例 |
---|---|---|---|
$operator | 操作者 model | Model | |
$funcKey | 功能 KEY | int | 1001 |
$action | 動做 | int | 1 |
$old | 修改前內容 | array | ['title' => 'before'] |
$new | 修改後內容 | array | ['title' => 'after'] |
$ip | string | 操作者 IP | 127.0.0.1 |
- 操作者 Model 獲取修改記錄
$user = new \App\Models\User; $records = $user->getOperatorRecords()->get();
- 操作對象 Model 獲取被修改紀錄
$post = new \App\Models\Post; $records = $post->getSubjectRecords()->get();
使用 Facade:
先引入門面
use Pharaoh\OperationRecord\Facades\OperationRecord;
- 建立一筆 操作記錄
OperationRecord::create($operatorId, $operatorType, $subjectId, $subjectType, $funcKey, $action ,$old, $new $ip);
參數 | 說明 | 類型 | 範例 |
---|---|---|---|
$operatorId | 操作者 ID | int | 123 |
$operatorType | 操作者 Model 類型 | string | User::class |
$subjectId | 操作對象 ID | int | 456 |
$subjectType | 操作對象 Model 類型 | string | Post::class |
$funcKey | 功能 KEY | int | 1001 |
$action | 動做 | int | 1 |
$old | 修改前內容 | array | ['title' => 'before'] |
$new | 修改後內容 | array | ['title' => 'after'] |
$ip | string | 操作者 IP | 127.0.0.1 |
- 建立一筆 操作記錄(使用 queue job 的方式)
OperationRecord::dispatch($operatorId, $operatorType, $subjectId, $subjectType, $funcKey, $action, $old, $new $ip);
queue 名稱 以 config/operation_record.php 裡設定的名稱為主
- 搜尋操作紀錄
$params = [ 'operator' => [ 'id' => 1, 'type' => User::class, ], 'subject' => [ 'id' => [2, 3], 'type' => Post::class, ], ..... ]; OperationRecord::find($params);
$params 內容可以自定義選則搭配,可選項目如下:
參數 | 欄位 | 說明 | 預設 |
---|---|---|---|
operator['id'] | 操作者 ID | 一筆使用 int (ex: 1) 多筆使用 array (ex: [1, 2, 3]) | |
operator['type'] | 操作者 model 類型 | model類別名稱 (ex:User::class) | |
subject['id'] | 操作對象 ID | 一筆使用 int (ex: 4) 多筆使用 array (ex: [4, 5, 6]) | |
subject['type'] | 操作對象 model 類型 | model類別名稱 (ex:Post::class) | |
action | 動做 | 參閱 config.operation_record.action內容 | |
func_key | 功能 KEY | 一筆使用 int (ex: 1001) 多筆使用 array (ex: [1001, 1002, 1003]) | |
begin_at | 開始時間 | datatime '2020-09-27 00:00:00' | 當日 00:00:00 |
end_at | 結束時間 | datatime '2020-09-27 23:59:59' | 當日 23:59:59 |
sort | 時間排序 | string 正序 'asc' 倒序 'desc' | 'desc' |
page | 第幾頁 | int 1 | 1 |
per_page | 每頁幾筆 | int 10 | 10 |
- 移除 $datetime 前的 操作記錄
$dataTime = '2020-07-30 00:00:00' OperationRecord::removeBefore($dataTime);
- 移除 $datetime 後的 操作記錄
$dataTime = '2020-07-30 00:00:00' OperationRecord::removeAfter($dataTime);
- 清空操作記錄
OperationRecord::truncate();