【问题标题】:Laravel Event ListeningLaravel 事件监听
【发布时间】:2014-10-27 13:02:18
【问题描述】:

我有一个与这篇文章类似的问题: Laravel - last login date and time timestamp

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

  1. 我的数据库中有一个“logrecords”表。
  2. 我在 global.php 中的事件侦听器正在处理默认的“users”表。
  3. 我希望我的事件监听器能够在我的“logrecords”表中插入数据。

我该怎么做:

  1. 我是否应该使用 eloquent 配置我的数据库表?
  2. 或者我应该更改 global.php 中的某些内容吗?

感谢您的支持。

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

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

'model' => 'User'

但我想收听和使用 UserLogrecord 模型。所以当我尝试在我的 global.php 中收听事件时> 文件,laravel 会自动尝试使用用户模型。所以我不得不像这样配置我的事件监听器:

我的 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();
});

目前它正在工作,但我认为这样编辑我的听众不是一个好主意。 我的目的是倾听用户和日志记录模型并进行一些处理。它现在符合我的目的,但我觉得我必须改进。

有什么想法吗?

【问题讨论】:

    标签: laravel eloquent event-listener


    【解决方案1】:

    @DemonDrake,

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

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

    或者甚至查询生成器。 有多种方法可以做到这一点。我个人建议你查看https://laracasts.com/lessons

    【讨论】:

    • 我可以将数据添加到我的日志表中,但我想使用事件侦听器来执行此操作。但是我当前的事件侦听器正试图将数据插入到默认用户表中。我希望我的听众使用我的日志类(模型)
    • 我假设你已经有了监听器,所以只需触发事件。查看您现有的代码会有所帮助,但是我会这样做:laravel.io/bin/aNB1N
    • Eddy,感谢您给我一些想法,我编辑了帖子,认为我必须改进我的代码。
    猜你喜欢
    • 1970-01-01
    • 2020-08-28
    • 2020-11-29
    • 1970-01-01
    • 1970-01-01
    • 2022-06-21
    • 1970-01-01
    • 2017-10-25
    • 1970-01-01
    相关资源
    最近更新 更多