【发布时间】:2014-08-14 17:03:57
【问题描述】:
我试图通过覆盖每个模型的delete() 函数来使级联软删除工作,我认为应该从Project 级联到Version 到Link,但问题是它似乎没有完全做到这一点。想法是删除项目也会删除所有版本,这将删除所有链接并清除其缓存版本,但使用$this->versions()->delete(); 似乎并没有真正调用Version 模型中的delete() 方法.
关于如何按照我的预期工作有什么想法吗?
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();
}
}
【问题讨论】:
标签: php laravel-4 eloquent soft-delete