如果我在某些型号表中有以下内容; As,Bs,Cs和Ds。
他们定义了这些关联:
非稳态:
$this->hasOne('Bs', [
'dependent' => true,
'cascadeCallbacks' => true,
]);
BsTable:
$this->belongsTo('As', [
'foreignKey' => 'A_id',
]);
$this->hasMany('Cs', [
'foreignKey' => 'B_id',
'dependent' => true,
'cascadeCallbacks' => true,
]);
CsTable:
$this->belongsTo('Bs', [
'foreignKey' => 'B_id',
]);
$this->hasMany('Ds', [
'foreignKey' => 'C_id',
'dependent' => true,
'cascadeCallbacks' => true,
]);
DsTable:
$this->belongsTo('Cs', [
'foreignKey' => 'C_id',
]);
删除A现在删除A,B和任何链接的C,但Ds仍然存在。
删除C会导致链接的Ds被删除。
为什么不删除A也删除链接到被删除的C的Ds?
我怎么能这样做呢?
编辑: 蛋糕精确版3.0.0
查看debugkit sql日志中的SQL,似乎序列对我来说是错误的。
select from Bs where A_id = a_id (finds record with id "b_id")
delete from Cs where B_id = b_id
select from Cs where B_id = b_id
delete from Bs where id = b_id
delete from A where id = a_id
(替换了表名和id以便于阅读)
根本不接触D,显然因为它在选择之前从Cs中删除了,所以永远不会让id(s)能够在D中找到任何东西。
非常困惑!
答案 0 :(得分:0)
尝试将CakePHP安装升级到最新的3.0稳定版本