首页 > 解决方案 > 如何将参数传递给 laravel elequent 模型的事件观察者

问题描述

我在 laravel 中有一个模型,我想在第一次创建模型对象后做一些事情。最简单的方法是在我的模型类中添加一个静态启动方法,如下面的代码:

class modelName extends Model
{
      public static function boot()
      {
         parent::boot();

         self::created(function ($model) {
             //the model created for the first time and saved
             //do something
            //code here
         });
     }
}

到目前为止,一切都很好!问题是: created 方法接受的唯一参数是模型对象本身(根据文档):

这些方法中的每一个都接收模型作为它们唯一的参数。

https://laravel.com/docs/5.5/eloquent#events

创建模型后,我需要更多的参数。我怎样才能做到这一点?

或者在保证模型已经创建的同时,还有其他方法可以做某事吗?

laravel 版本是 5.5。

标签: phplaravellaravel-5eloquentmodel

解决方案


你很近。我可能会在您在控制器中实际创建模型之后立即调度一个事件。像这样的东西。

class WhateverController
{
    public function create()
    {
        $model = Whatever::create($request->all());
        $anotherModel = Another::findOrFail($request->another_id);

        if (!$model) {
            // The model was not created.
            return response()->json(null, 500);
        }

        event(new WhateverEvent($model, $anotherModel));
    }
}

推荐阅读