问题描述
public $attachMany = [
'gallery' => 'System\Models\File',];
如果我将softDelete => true
添加到上面的'gallery'
数组中,则在软删除后它将从磁盘上删除图库图像,但是我只想在永久删除磁盘后才从磁盘上删除图像附件删除模型({{1)}。
在软删除之后,模型的事件forceDelete()
似乎也被触发,因此似乎我也不能使用它。
添加:
由于某种原因,这不会删除图像或图像记录:
afterDelete()
解决方法
这里的问题是System\Models\File
模型没有SoftDelete trait
和deleted_at field
,因此不会像其他模型一样。
目前,您需要手动管理这种关系。
你能做什么?
- 只是请勿添加任何类型的选项
softDelete => true
或delete => true
- 当您
soft delete
的主要模型比预期的所有相关gallery files
会not be deleted
达到预期的状态时,并且在还原主要模型时,所有gallery files
都会在那里。 li>
- 现在,当您执行
forceDelete()
时,您需要在主模型中添加如下所示的其他代码来actually delete
那些关系。
<?PHP
//... your model
public $attachMany = [
'gallery' => 'System\Models\File',];
public function afterDelete() {
// it will ensure that your file model is deleted.
// once parent model is actually deleted
foreach ($this->gallery as $gallery) {
$gallery->delete();
}
}
//.. your model
参考:https://octobercms.com/forum/post/deleting-attachments-when-deleting-model
如果有任何疑问,请发表评论。