21294 Posts in 5734 Topics by 2602 members
|
Page:
1
|
Go to End | |
| Author | Topic: | 245 Views |
-
Remove Asset when a dataobject is deleted

16 May 2012 at 1:26am
Hello
I have got a class called project
class project extends DataObject {
static $has_one = array {
'aFile' =>'MyFile'
}public onBeforeDelete(){
parent::onBeforeDelete();
$this->aFile()->delete();
}
}An the MyFile class is
MyFile extends File{
public onBeforeDelete(){
//do something
parent::OnBeforeDelete()
}}
Problem:
When I delete a Project within the ModelAdmin, I got this error:There has been an error
and I am not sure where to go from here. I check the log file and I got
[15-May-2012 02:03:15] Notice at d line d: d (/admin/projects/Project/3/EditForm?action_doDelete=Delete)
[15-May-2012 02:03:15] Error at sapphire/core/model/DataObject.php line 1126: Uncaught Exception: DataObject::delete() called on a DataObject without an ID -
Re: Remove Asset when a dataobject is deleted

16 May 2012 at 1:39am
Let me answer myself:
When you use the relation-getter, you got a ComponentSet. The delete method for it doesn't work
Here is what i have to do in the OnbeforeDelete() function of the Project class
public function OnBeforeDelete(){
$myFile = $this->aFile();
$file = DataObject::get_by_id('MyFile', $myFile->ID); //we have to make sure it is a Dataobject object
$file->delete();
$file->destroy();
return parent::OnBeforeDelete();
}
| 245 Views | ||
|
Page:
1
|
Go to Top |

