Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Laravel 8中检测模型中的更新事件_Laravel_Laravel 5_Eloquent - Fatal编程技术网

如何在Laravel 8中检测模型中的更新事件

如何在Laravel 8中检测模型中的更新事件,laravel,laravel-5,eloquent,Laravel,Laravel 5,Eloquent,大家好 情况如下 在控制器中,在更新方法中,我尝试更新对象 此对象的字段中有一个图像 编写了一个trait来处理此字段并加载图像 在模型本身中,我调用了update方法,它只确定更新对象的事件 问题在于指定目录中的以下图像已加载,并且数据库中的条目本身没有更改 这是我的密码 控制器 模型 特性 模型中有额外的代码 public function update(Request $request, MainHeader $mainHeader): RedirectResponse {

大家好 情况如下 在控制器中,在更新方法中,我尝试更新对象 此对象的字段中有一个图像 编写了一个trait来处理此字段并加载图像 在模型本身中,我调用了update方法,它只确定更新对象的事件 问题在于指定目录中的以下图像已加载,并且数据库中的条目本身没有更改 这是我的密码

  • 控制器
  • 模型
  • 特性
  • 模型中有额外的代码

    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
            });
        }
    }