如何在Laravel 8中检测模型中的更新事件
大家好 情况如下 在控制器中,在更新方法中,我尝试更新对象 此对象的字段中有一个图像 编写了一个trait来处理此字段并加载图像 在模型本身中,我调用了update方法,它只确定更新对象的事件 问题在于指定目录中的以下图像已加载,并且数据库中的条目本身没有更改 这是我的密码如何在Laravel 8中检测模型中的更新事件,laravel,laravel-5,eloquent,Laravel,Laravel 5,Eloquent,大家好 情况如下 在控制器中,在更新方法中,我尝试更新对象 此对象的字段中有一个图像 编写了一个trait来处理此字段并加载图像 在模型本身中,我调用了update方法,它只确定更新对象的事件 问题在于指定目录中的以下图像已加载,并且数据库中的条目本身没有更改 这是我的密码 控制器 模型 特性 模型中有额外的代码 public function update(Request $request, MainHeader $mainHeader): RedirectResponse {
public function update(Request $request, MainHeader $mainHeader): RedirectResponse
{
$mainHeader->update([
'language_id' => $request->language_id,
'brandLogoImage' => $request->file('brandLogoImage'),
'homeTitle' => $request->homeTitle,
'ourProjectsTitle' => $request->ourProjectsTitle,
'contactTitle' => $request->contactTitle,
'feedbackTitle' => $request->feedbackTitle,
]);
return redirect()->route('admin.header.index')->with('success', 'Данные успешно обновлены');
}
如果您在模型中调用update methode,那么您将覆盖模型类的默认update(),它不会侦听事件,它只是在父级之前运行代码:,因此您需要确保所做的更改不会被父级调用覆盖 关于您关于如何检测更新的问题,如果您想在更新之前执行任何操作,而不是我建议您使用或使用的操作,观察员会听取有关您的模型的各种事件,如更新或更新。。但我认为如果它只是用于更新事件,那么您应该使用它 例如:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
/**
* The "booted" method of the model.
*
* @return void
*/
protected static function booted()
{
static::updating(function ($user) {
// do what you want
});
}
}
如果您在模型中调用update methode,那么您将覆盖模型类的默认update(),它不会侦听事件,它只是在父级之前运行代码:,因此您需要确保所做的更改不会被父级调用覆盖
关于您关于如何检测更新的问题,如果您想在更新之前执行任何操作,而不是我建议您使用或使用的操作,观察员会听取有关您的模型的各种事件,如更新或更新。。但我认为如果它只是用于更新事件,那么您应该使用它
例如:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
/**
* The "booted" method of the model.
*
* @return void
*/
protected static function booted()
{
static::updating(function ($user) {
// do what you want
});
}
}
我不明白您想要完成什么,为什么要覆盖更新,我写了一个解释事件的答案,因为您正在覆盖更新以在默认更新之前执行smlthing。你能详细说明一下你的问题吗?我只是想找到另一种方法来注入一些业务逻辑。我不明白你为什么要这样使用update(),你可以在调用更新之前在控制器中完成这一切,但是如果你想的话,我可以告诉你如何正确地监听更新。你的目的是知道如何检测更新吗?或者如何上传文件并将其位置保存为字段?我不明白您想要完成什么,为什么要覆盖更新,我写了一个解释事件的答案,因为您正在覆盖更新以在默认更新之前执行smlthing。你能详细说明一下你的问题吗?我只是想找到另一种方法来注入一些业务逻辑。我不明白你为什么要这样使用update(),你可以在调用更新之前在控制器中完成这一切,但是如果你想的话,我可以告诉你如何正确地监听更新。你的目的是知道如何检测更新吗?或者如何上传文件并将其位置保存为字段?看起来不错,我会尝试一下。谢谢您的帮助。非常欢迎@öчччччччччччччч。查看其他方法的链接好的,我会尝试的谢谢您的帮助非常欢迎@Бччччччччч。检查其他方法的链接
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
/**
* The "booted" method of the model.
*
* @return void
*/
protected static function booted()
{
static::updating(function ($user) {
// do what you want
});
}
}