Skip to main content

This site requires you to update your browser. Your browsing experience maybe affected by not having the most up to date version.

General Questions /

General questions about getting started with SilverStripe that don't fit in any of the categories above.

Moderators: martimiz, Sean, Ed, biapar, Willr, Ingo, swaiba

Remove Asset when a dataobject is deleted

Go to End

2 Posts   1608 Views


Community Member, 97 Posts

16 May 2012 at 1:26am


I have got a class called project

class project extends DataObject {

static $has_one = array {
'aFile' =>'MyFile'

public onBeforeDelete(){

An the MyFile class is

MyFile extends File{

public onBeforeDelete(){
//do something


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


Community Member, 97 Posts

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
return parent::OnBeforeDelete();