删除cakephp中的多级(链删除)

Er.*_*.KT 7 php cakephp model cascading-deletes cakephp-2.3

我想删除所有依赖的rable记录

我的协会

分支模型

var $hasMany =array(
    'Dealbranch' => array(
        'className' => 'Dealbranch',
        'foreignKey' => 'DLB_BR_ID',
        'dependent' =>true
    )
 );
Run Code Online (Sandbox Code Playgroud)

Dealbranch模型

var $belongsTo = array(
    'Deal' => array(
        'className' => 'Deal',
        'foreignKey' => 'DL_ID',
        'dependent' => true
    ),
    'Branch' => array(
        'className' => 'Branch',
        'foreignKey' => 'DLB_BR_ID',
    )
);
Run Code Online (Sandbox Code Playgroud)

交易模式

var $hasMany = array(
    'Dealbranch' => array(
        'className' => 'Dealbranch',
        'foreignKey' => 'DLB_DL_ID',
    )
);
Run Code Online (Sandbox Code Playgroud)

在我使用过的控制器中

$this->Branch->delete($id,true);
Run Code Online (Sandbox Code Playgroud)

现在这里我正在删除分支,因此依赖的dealbranch已成功删除,但没有删除任何交易记录

我想要:我正在删除分支,所以应删除所有依赖的dealbranch并删除所有依赖(依赖于dealbranch)交易记录

这里Deal是Dealbranch的孩子,Dealbranch是分店的孩子

现在,对于一个分支,Dealbranch中有多个记录,而对于多个Dealbranch,Deal中有一条记录

在此输入图像描述

请帮我.我正在使用cakephp 2

Ani*_*mar 0

Branch可以使用以下命令删除与之关联的所有模型记录

$this->Branch->delete($id,true);

我认为如果你想删除删除分支记录时的交易记录,那么你的模型Branch应该与Deal模型相关联。

只需尝试像这样添加

分支机构模型

var $hasMany =array(
    'Dealbranch' => array(
        'className' => 'Dealbranch',
        'foreignKey' => 'DLB_BR_ID',
        'dependent' =>true
    ),
    'Deal' => array(
        'className' => 'Deal',
        'foreignKey' => 'your_foriegn_key',
        'dependent' =>true
    )

 );
Run Code Online (Sandbox Code Playgroud)

或者你可以尝试这样

更新:

根据您的要求,Deal 是 Dealbranch 的子级,Dealbranch 是分支的子级,您的模型关联应该是这样的。

交易分支模型应该是这样的。

DealBranch模型

var $belongsTo = array(
    'Branch' => array(
        'className' => 'Branch',
        'foreignKey' => 'DLB_BR_ID',
    )
);
var $hasMany = array(
    'Deal' => array(
        'className' => 'Deal',
        'foreignKey' => 'DL_ID',
        'dependent' => true
    ),
);
Run Code Online (Sandbox Code Playgroud)

交易模型应该是这样的。

交易模式

var $belongsTo = array(
    'Dealbranch' => array(
        'className' => 'Dealbranch',
        'foreignKey' => 'DLB_DL_ID',
    )
);
Run Code Online (Sandbox Code Playgroud)