ModelフックbeforeDeleteは階層的に機能しないようです。例を挙げて説明しましょう。
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');
}
}
「祖父母」Model_Userでdelete()を呼び出すと、意図したとおりにすべてのItemレコードを削除しようとしますが、そこからItem.beforeDeleteフックを実行せず、Itemを削除する前にDetailsレコードを削除しません。
私が間違っているのは何ですか?