php - 如何将参数传递给 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 方法接受的唯一参数是模型对象本身(根据文档):
这些方法中的每一个都接收模型作为它们唯一的参数。
创建模型后,我需要更多的参数。我怎样才能做到这一点?
或者在保证模型已经创建的同时,还有其他方法可以做某事吗?
laravel 版本是 5.5。
解决方案
你很近。我可能会在您在控制器中实际创建模型之后立即调度一个事件。像这样的东西。
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));
}
}
推荐阅读
- r - “dgCMatrix”类的稀疏矩阵转换为数据帧,用于R中的同时回归
- css - 我对使用 CSS 时的空规则有疑问
- php - Php - $_GET 读取 url 并显示消息,但它不会正确读取 url
- cypress - 问:赛普拉斯灯具 - 无法读取未定义的属性
- omnet++ - OMNeT++:如何通过特定的无线接口发送数据包?
- python - Selenium 打开 Web 浏览器但不打开目标 url (InvalidArgumentException: Message: invalid argument)
- r - R; 滚动窗口:计算 3 个 previos 点的方位角,并将其与数据框中以下 3 个值的方位角进行比较
- webforms - 母版页徽标未显示在子文件夹内的新 Web 表单上
- python - 如何在 n 时间后通过阻塞解析解析页面?
- nginx - vlc 中 plablack 的 RTMP 视频点播 (vod) 问题