Laravel事件监听



我有一个类似于这篇文章的问题:Laravel-最后登录日期和时间戳

简而言之,我的目的和问题是:

  1. 我的数据库中有一个"logrecords"表
  2. 我在global.php中的事件侦听器只是在默认的"users"表上工作
  3. 我希望我的事件侦听器能够在我的"日志记录"表中插入数据

我该怎么做:

  1. 我应该使用雄辩来配置我的数据库表吗
  2. 或者我应该更改global.php中的某些内容吗

感谢您的支持。

--------------------更新--------------------

我意识到,在我的auth.php文件中,默认的身份验证模型被设置为:

'model' => 'User'

但我想倾听并使用UserLogrecord模型。因此,当我尝试在global.php文件中侦听事件时,laravel会自动尝试使用User模型。因此,我不得不这样配置我的事件侦听器:

我的global.php文件的一部分:

//First Example
Event::listen('auth.login', function($user)
{   
    $userLogRecord = Logrecord::firstOrCreate(array('user_id' => $user->id));
    $userLogRecord->user_id = $user->id;
    $userLogRecord->login_last_at = date('Y-m-d H:i:s');
    $userLogRecord->save();
});
//Second Example
Event::listen('auth.logout', function($user)
{    
    $userLogRecord = Logrecord::firstOrCreate(array('user_id' => $user->id));
    $userLogRecord->user_id = $user->id;
    $userLogRecord->logout_last_at = date('Y-m-d H:i:s');
    $userLogRecord->save();
});

它目前正在发挥作用,但我认为这样编辑我的听众不是一个好主意我的目的是对User和Logrecord模型进行监听和处理这符合我现在的目标,但我觉得我必须提高。

有什么想法吗?

@DemonDrake,

如果我理解正确,您只是想将数据添加到"日志"表中?在最简单的形式中,答案是"是的,你会用雄辩的ORM来表示

class Log extends Eloquent {
    protected $table = 'log';
}

甚至可能是查询生成器。有很多方法可以做到这一点。我个人建议你退房https://laracasts.com/lessons

最新更新