看起来 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 记录。
我做错了什么?