Php Laravel删除方式:如何删除相关文件

Php Laravel删除方式:如何删除相关文件,php,laravel,laravel-4.2,Php,Laravel,Laravel 4.2,我对我的Laravel4.2项目有一些问题。 我有一个照片模型和一个服务模型与关系服务有很多照片 照片(文件)存储在public/upload/目录中。 当我删除照片时(方法delete()在photo中),文件将从服务器上删除(代码如下所示),但当我删除服务时(方法delete()在Service中),则删除服务及其所有照片的数据库条目(数据库记录)当我触发$this->photos()->delete()时,文件被删除,但文件不是偶数 我放置了Log::debug('photos->dele

我对我的Laravel4.2项目有一些问题。 我有一个
照片
模型和一个
服务
模型与关系
服务有很多照片

照片(文件)存储在
public/upload/
目录中。 当我删除照片时(方法
delete()
photo
中),文件将从服务器上删除(代码如下所示),但当我删除
服务时(方法
delete()
Service
中),则删除
服务及其所有照片的数据库条目(数据库记录)当我触发
$this->photos()->delete()时,文件被删除,但文件不是偶数

我放置了
Log::debug('photos->delete())
Photo->delete()
方法中,如果我直接调用它,它将被激发,并且当我尝试通过
Service->delete()
启动它时,没有日志条目。 我不知道为什么会这样。有人能帮忙吗

这是我的代码
服务

 public function photos()
 {
    return $this->hasMany('Photo');
 }
 public function delete()
 { 
    $this->photos()->delete();
    parent::delete();
 }
照片

public function delete()
{
    Log::debug('photos->delete() fired');
    $file = public_path().'/upload/'.$this->filename;
    if(File::isFile($file)){
       File::delete($file);
    }
    parent::delete();
}

您可以创建用于删除模型refer this中事件的观察者模式。您可以创建用于删除模型refer this中事件的观察者模式。首先,无需
重载
方法

在数据库中,建立服务和照片之间的关系,以及onDelete级联

要删除文件,请向照片模型添加事件侦听器:

class Photo extends Eloquent {


public static function boot()
{
    parent::boot();

    Photo::deleted(function($photo){
         $file = public_path().'/upload/'.$photo->filename;
         if(File::isFile($file)){
              File::delete($file);
         }
    });
}

}

首先,无需
重载
delete()方法

在数据库中,建立服务和照片之间的关系,以及onDelete级联

要删除文件,请向照片模型添加事件侦听器:

class Photo extends Eloquent {


public static function boot()
{
    parent::boot();

    Photo::deleted(function($photo){
         $file = public_path().'/upload/'.$photo->filename;
         if(File::isFile($file)){
              File::delete($file);
         }
    });
}

}

我无法更改数据库架构,因此无法设置删除级联。在我测试时,如果不更改数据库,您的解决方案将无法工作。Thanx无论如何,我为文件删除部分提供的解决方案不依赖于数据库更改。我无法更改数据库架构,因此无法设置
onDelete cascade
。在我测试时,如果不更改数据库,您的解决方案将无法工作。Thanx无论如何,我为文件删除部分提供的解决方案不依赖于数据库更改。如果我直接删除模型,它可以工作。
Photo->delete()
,但是当它通过
Service()
启动时(
$this->photos()->delete()
),它根本不会运行。如果我直接删除模型,它就可以工作。
Photo->delete()
但是当它通过
服务()
$this->photos()->delete()
)启动时,它根本不会运行。