It looks that Model hook beforeDelete don't work hierarchialy. Let me explain with example.
class Model_User extends Model_Table{
public $table='user';
function init(){
parent::init();
$this->debug();
$this->addField('name');
$this->hasMany('Item');
$this->addHook('beforeDelete',$this);
}
function beforeDelete($m){
$m->ref('Item')->deleteAll();
}
}
class Model_Item extends Model_Table{
public $table='item';
function init(){
parent::init();
$this->debug();
$this->addField('name');
$this->hasOne('User');
$this->hasMany('Details');
$this->addHook('beforeDelete',$this);
}
function beforeDelete($m){
$m->ref('Details')->deleteAll();
}
}
class Model_Details extends Model_Table{
public $table='details';
function init(){
parent::init();
$this->debug();
$this->addField('name');
$this->hasOne('Item');
}
}
When I call delete() on "grand-parent" Model_User, then it tries to delete all Item records as intended, but from there don't execute Item.beforeDelete hook and don't delete Details records before trying to delete Item.
What I'm doing wrong ?