我试图通过覆盖每个模型的delete()
功能来使级联软删除工作,我认为应该从Project
to级联到Version
to Link
,但问题是它似乎根本没有这样做。想法是删除项目也会删除所有版本,这将删除所有链接并清除其缓存版本,但 using$this->versions()->delete();
似乎并没有真正调用模型delete()
中的方法Version
。
关于如何让它像我期望的那样工作的任何想法?
class Project extends Eloquent {
protected $softDelete = true;
public function versions()
{
return $this->hasMany('Version');
}
public function delete()
{
$this->versions()->delete();
return parent::delete();
}
}
class Version extends Eloquent {
protected $softDelete = true;
public function project()
{
return $this->belongsTo('Project', 'project_id');
}
public function links()
{
return $this->hasMany('Link');
}
public function delete()
{
$this->links()->delete();
return parent::delete();
}
}
class Link extends Eloquent {
protected $softDelete = true;
public function version()
{
return $this->belongsTo('Version', 'version_id');
}
public function delete()
{
Cache::forget($this->id);
return parent::delete();
}
}