rmasters/culpa

为Laravel的Eloquent模型添加Blameable支持

v0.6.0 2013-10-30 10:21 UTC

This package is not auto-updated.

Last update: 2024-09-23 14:23:38 UTC


README

Culpa扩展了Laravel的Eloquent ORM模型。此扩展在创建、更新或软删除模型时自动添加对认证用户的引用。

安装

此包适用于PHP 5.3及更高版本,但包括用于在PHP 5.4+上更容易使用的特性。

要将此包安装到您的项目中

  1. 将以下内容添加到您的 composer.json 文件的require部分: "rmasters/culpa": "dev-master",
  2. 运行 composer update,
  3. 在config/app.php中添加到 providers 列表:"Culpa\CulpaServiceProvider",
  4. 将配置发布到您的应用程序:artisan config:publish rmasters/culpa

使用方法

您可以通过添加受保护的属性和模型观察器,在每個模型的基础上添加可审计字段。属性 $blameable 包含您希望记录的事件 - 目前这仅限于创建、更新和删除 - 它们与Laravel的时间戳功能相同。

class Comment extends Eloquent {

    protected $blameable = array('created', 'updated', 'deleted');
  • 在创建时,认证用户将被设置为 created_by_id,
  • 在创建和更新时,认证用户将被设置为 updated_by_id,
  • 此外,如果模型是软删除的,认证用户将被设置为 deleted_by_id.

要激活这些字段的自动更新,您需要将模型观察器添加到该模型

class Comment extends Eloquent {

    // ...

}
Comment::observe(new Culpa\BlameableObserver);

可以使用传递事件名称到列的关联数组来更改使用的列名

protected $blameable = array(
    'created' => 'author_id',
    'updated' => 'revised_by_id'
);

您需要将这些字段添加到模型的迁移中(具有外键的相应无符号整数字段),并为模型添加访问器

class Comment extends Eloquent {

    public function createdBy() {
        return $this->belongsTo('User');
    }

}

如果您使用的是PHP 5.4或更高版本,可以利用提供的特性自动添加这些方法(Culpa\CreatedByCulpa\UpdatedByCulpa\DeletedBy)。

更改用户来源

culpa::users.active_user 配置应返回一个函数,该函数返回用户ID,如果没有认证的用户则返回null。

'users' => [

    // The default implementation:
    'active_user' => function() {
        return Auth::check() ? Auth::user()->id : null;
    }

    // or, for Sentry2 integration:
    'active_user' => function() {
        return Sentry::check() ? Sentry::getUser()->id : null;
    }

更改用户类

默认情况下,这些字段将与 User 相关 - 这可以在包配置文件中这样配置

'users' => array(

    // Use the Sentry2 user model
    'classname' => 'Cartalyst\Sentry\Users\Eloquent\User'

)

许可证

Culpa在MIT许可证下发布。