Laravel事件听力

时间:2014-10-27 13:02:18

标签: laravel eloquent event-listener

我遇到类似这篇文章的问题: Laravel - last login date and time timestamp

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

  1. 我的数据库中有一个“ logrecords ”表。
  2. global.php 中的我的事件监听器只处理默认的“用户”表。
  3. 我希望我的事件监听器能够在我的“ logrecords ”表格中插入数据。
  4. 我该怎么做:

    1. 我应该使用 eloquent
    2. 配置我的数据库表
    3. 或者我应该更改 global.php
    4. 中的内容

      感谢您的支持。

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

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

      'model' => 'User'
      

      但我想倾听并使用用户 Logrecord 模式。所以当我尝试在 global.php file,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模型进行一些处理。它现在符合我的目的,但我觉得我必须改进。

      有什么想法吗?

1 个答案:

答案 0 :(得分:1)

@DemonDrake,

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

class Log extends Eloquent {

    protected $table = 'log';

}

或者甚至可能是查询构建器。 有很多方法可以做到这一点。我个人建议您查看https://laracasts.com/lessons