devel8 / laravel-action-tracker
一个用于跟踪模型上操作的简单包
0.1.5
2018-10-02 13:56 UTC
Requires
- php: ^5.3.3 || ^7.0
- laravel/framework: ~5.4.0|~5.5.0|~5.6.0|~5.7.0
This package is auto-updated.
Last update: 2024-09-17 21:28:52 UTC
README
本包提供了一个简单的方法来记录模型上所执行的操作的历史。
安装
执行以下命令以获取该包的最新版本:
composer require devel8/laravel-action-tracker
编辑config/app.php文件,并添加以下行以注册服务提供者:
'providers' => [ ... Devel8\LaravelActionTracker\ActionTrackerProvider::class, ],
运行发布命令以复制包配置
php artisan vendor:publish --provider "Devel8\LaravelActionTracker\ActionTrackerProvider"
最后,您应该运行迁移数据库命令
php artisan migrate
使用方法
在模型类中将Devel8\LaravelActionTracker\ActionTrackerTrait
用作特质
class Post extends Model { use ActionTrackerTrait;
指定模型中执行的操作,在模型类中定义一个actions
属性
protected $actions = [ 'closed', 'action2' ];
通过执行以下doActionTracker
方法注册对模型执行的操作
$user = Auth::user(); $post = Post::find(56); $post->doActionTracker('closed', "Post was closed by {$user->user_nick}");
获取特定模型上的操作
// Retrieve all actions over a specific model $post = Post::find(56); $actions = $post->actionTracker()->get(); // Retrieve one action over a specific model: $post = Post::find(56); $actions = $post->actionTracker()->where('action', 'closed')->get();
配置
您可以根据模型、表名和列名前缀等选项进行配置
[ /* * Action Tracker Model Class */ 'model' => \CustomActionTracker::class, /* * Database table where actions are tracked */ 'table_name' => 'custom_action_trackers', /* * Prefix word used to database columns name */ 'prefix' => 'custom_action_tracker' ]
故障排除
多态关系
本包使用多态关系,因此当您尝试通过模型检索操作信息时可能会遇到问题。默认情况下,Laravel将模型命名空间保存到数据库中以用于关联模型。由于命名空间包含反斜杠,当您通过模型进行筛选时可能会出现问题。为了避免这种情况,您可以在AppServiceProvider
中映射模型类名。
class AppServiceProvider extends ServiceProvider { /** * Bootstrap any application services. * * @return void */ public function boot() { Relation::morphMap([ 'Post' => \Entities\Post::class ]); }