Laravel — мониторинг изменений записей

Мне нужна модель Eloquent для представления документа, загруженного на сервер. Одним из таких полей является абсолютный путь к файлу. Я хочу иметь возможность перемещать файл всякий раз, когда запись базы данных обновляется. Я видел, что Laravel включает в себя Наблюдатели обрабатывать такие события. Проблема в:

Классы наблюдателей имеют имена методов, которые отражают события Eloquent, которые вы хотите прослушивать. Каждый из этих методов получает модель в качестве единственного аргумента.

Это означает, что, к сожалению, с данной системой я не могу фактически переместить файл, так как у меня не будет способа извлечь как текущее, так и новое местоположение рассматриваемого файла. Есть ли другой способ определения изменения значения при доступе к старым и новым значениям?

0

Решение

Похоже, вы можете использовать updating модельное событие за это. Вы можете зарегистрировать событие в boot метод поставщика услуг (например, app/Providers/AppServiceProvider.php) или путем создания класса наблюдателя, как вы упомянули.

isDirty а также getOriginal методы должны помочь вам проверить, нужно ли перемещать файл, а затем получить его исходный путь.

Например:

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 eloquent: получение данных

4

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector