在 laravel 8 应用程序中,我使用 spatie/laravel-medialibrary 9 我想在使用引导方法删除父模型时从存储中删除文件,例如
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Validation\Rule;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Spatie\MediaLibrary\HasMedia;
use Spatie\MediaLibrary\InteractsWithMedia;
use Illuminate\Support\Facades\File;
use Illuminate\Support\Facades\Storage;
class Photo extends Model implements HasMedia
{
use HasFactory;
use InteractsWithMedia;
protected $table = 'photos';
protected static function boot()
{
parent::boot();
static::deleting(function ($photo) {
\Log::info( ' -1 INSIDEstatic::deleting(::' );
foreach ($photo->getMedia('photo') as $mediaImage) {
\Log::info( varDump($mediaImage->getPath(), ' -1 $mediaImage->getPath()::') );
if (File::exists($mediaImage->getPath())) {
\Log::info( varDump($mediaImage->getPath(), ' -1 $mediaImage->getPath()::') );
Storage::delete($mediaImage);
}
}
});
}
但是文件没有被删除并且检查日志我看到了消息
-1 INSIDEstatic::deleting(:
,但不是里面的消息
foreach ($photo->getMedia('photo') as $mediaImage) {
环形。为什么这样 ?我期望
static::deleting(function
在控制器方法中删除 rmodel 之前触发:
try {
DB::beginTransaction();
$photo->delete();
DB::commit();
如何删除这些文件?
谢谢!