rmasters / culpa
为Laravel的Eloquent模型添加Blameable支持
v0.6.0
2013-10-30 10:21 UTC
Requires
- php: >=5.3.0
- illuminate/config: 4.*
- illuminate/events: 4.*
- illuminate/support: 4.*
Requires (Dev)
- illuminate/database: 4.*
- mockery/mockery: 0.8.*
- phpunit/phpunit: 3.7.*
- satooshi/php-coveralls: dev-master
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+上更容易使用的特性。
要将此包安装到您的项目中
- 将以下内容添加到您的
composer.json
文件的require部分:"rmasters/culpa": "dev-master"
, - 运行
composer update
, - 在config/app.php中添加到
providers
列表:"Culpa\CulpaServiceProvider"
, - 将配置发布到您的应用程序:
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\CreatedBy
,Culpa\UpdatedBy
,Culpa\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许可证下发布。