在DB :: update或DB :: delete上调用附加方法(laravel,eloquent)

时间:2014-01-29 18:40:40

标签: php laravel

我正在尝试为我们的应用程序创建日志记录界面。我需要通过应用程序跟踪数据库中何时发生更改。因此,当有人更新字段时,我需要在日志中插入一行,其中包含表,列原始值,列新值,时间戳和进行更改的用户。对我来说,这样做的逻辑方法是绑定到laravel中的DB类,因此每次调用它并使用更新/删除方法时,它都会运行我获取所需信息并将其插入日志的新方法。

我需要它在数据库级别工作我相信,因为它需要发生从DB或eloquent调用的更新/删除。

我该怎么做呢?

3 个答案:

答案 0 :(得分:1)

Eloquent为您提供了一些不错的活动,甚至在文档中也是如此!谁知道你可以在那里找到这么多。 http://laravel.com/docs/eloquent#model-events

答案 1 :(得分:0)

您是否考虑过使用模型观察者(http://laravel.com/docs/eloquent#model-observers)观察所有更新和删除事件并将您的逻辑放在该观察者中,而不是尝试将某些内容附加到数据库图层上?

答案 2 :(得分:0)

经过搜索和反复试验,我按照以下方式完成了目标。

我创建了一个事件监听器,我将其放在/app/events/database.php中用于组织目的

使用以下

<?php
Event::listen('illuminate.query', function($query, $bindings, $time, $name)
{
  // Code to log query goes here  
});

然后我在/app/start/global.php中放入以下行

include(app_path().'/events/database.php');

现在使用DB或Eloquent捕获查询数据库的所有请求。