devel8/laravel-action-tracker

一个用于跟踪模型上操作的简单包

安装: 28

依赖项: 0

建议者: 0

安全: 0

星标: 5

关注者: 3

分支: 0

开放问题: 0

类型:laravel-package

0.1.5 2018-10-02 13:56 UTC

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
        ]);
    }