当前位置:  开发笔记 > 编程语言 > 正文

Laravel-监视记录更改

如何解决《Laravel-监视记录更改》经验,为你挑选了1个好方法。

我需要一个雄辩的模型来代表上载到服务器的文档。这样的字段之一就是文件的绝对路径。我希望能够在数据库记录更新时移动文件。我已经看到Laravel包含了处理此类事件的观察者。问题是:

观察者类的方法名称反映了您希望侦听的口才事件。这些方法中的每一个都将模型作为唯一参数。

不幸的是,这意味着,在给定的系统下,我无法真正移动文件,因为我将无法检索相关文件的当前位置和新位置。还有另一种方法可以检测访问旧值和新值时值何时发生变化?



1> 小智..:

听起来您可以为此使用updating 模型事件。您可以boot使用服务提供商的方法(例如app/Providers/AppServiceProvider.php)注册事件,也可以通过创建观察者类来注册事件。

isDirtygetOriginal方法可以帮助你检查文件是否需要移动,然后拿到它的原始路径。

例如:

use Storage;
use App\Document;

public function boot()
{
    Document::updating(function ($document) {
        if ($document->isDirty('file_path')) {
            // File needs to be moved
            $current_path   = $document->getOriginal('file_path');
            $new_path       = $document->file_path;

            Storage::move($current_path, $new_path);
        }
    });
}

另请参阅:Laravel更新雄辩事件:获取数据

推荐阅读
无名有名我无名_593
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有