在我的Laravel应用程序中,它基本上是一些“资源”(客户端,帐户等)的CRUD应用程序,我想创建一个审计日志。这将使我能够看到任何创建,删除或编辑应用程序中的任何资源,何时发生以及哪个用户进行了更改。在Laravel中,创建一个日志来存储资源的所有更改
我开始通过创建以下架构(以及相关的模型Change
):
Schema::create('changes', function(Blueprint $table)
{
$table->increments('id');
$table->dateTime('change_date')->nullable(); //The time the change was made
$table->string('model'); // The model the change was made to
$table->text('change'); // What was changed (e.g. `name` field for client 10015 was changed from "John" to "Johnny")
$table->integer('user_id')->unsigned()->nullable(); // The user who made the change
$table->timestamps();
});
现在,每当一个变化到另一个模型所做的,我想我的应用程序中插入的变化表中的记录。例如。说一个客户端被编辑,一些额外的代码将需要在Client->save()
之后运行。喜欢的东西:
$change = new Change;
$change->user_id = User()->id;
$change->model = // ? how do I get the name of the model just changed?
$change->change = 'User 10015 edited: name: "John" -> "Johnny"; active: 1 -> 0;'; // somehow get the fields that were changed. Different for delete and create.
$change->save();
我想我需要做3个过滤器(或事件侦听器?),分别用于创建,编辑和删除。但是,我如何传递所需的数据(如字段和型号名称)?有没有包已经这样做?任何帮助赞赏。
编辑 的revisionable包似乎做我想要的95% - 只要不记录创建和删除。
http://stackoverflow.com/questions/34726400/laravel-auditing-eloquent-events-or-alternatives – 2016-03-15 14:47:30
http://stackoverflow.com/questions/34726400/laravel-auditing-eloquent-events-or-alternatives – 2016-03-15 14:53:03