首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除数据对象时删除文件

删除数据对象时删除文件
EN

Stack Overflow用户
提问于 2014-08-06 09:45:42
回答 1查看 356关注 0票数 0

我有'Resouce‘数据对象,如下所示,附件作为has_one关系。当“资源”对象被删除时,我想删除附件。

但是我得到的是致命错误:调用非对象的成员函数delete()

代码语言:javascript
复制
<?php 
class Resource extends DataObject
{ 
private static $db = array (
    'Name' => 'Varchar(200)',
    'Description' => 'Text',
    'Category' => "Enum('Data, Drafts, Drawings, Reports, Images, Other')",
    'SortOrder' => 'Int'
);

private static $has_one = array (
    'Attachment' => 'File',
    'ResourcePage' => 'ResourcePage'
);


public function onBeforeDelete()
{
    $myAttachment = $this->Attachment();
    $file = DataObject::get_by_id('File', $myAttachment->ID); //we have to make sure it is a Dataobject object      
    $file->delete();
    $file->destroy();       
    return parent::onBeforeDelete();                    
}

}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-06 11:54:48

这里的问题是假设DataObject::get_by_id总是返回一个对象是不正确的。您可以首先检查$file是一个非假值,也可以通过has_one getter执行所有操作,使用:

代码语言:javascript
复制
public function onBeforeDelete() {
    if ($this->Attachment()->exists()) {
        $this->Attachment()->delete();
    }
}
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25157102

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档