我想删除所有相关的rable记录
我的协会
分支模型
var $hasMany =array(
'Dealbranch' => array(
'className' => 'Dealbranch',
'foreignKey' => 'DLB_BR_ID',
'dependent' =>true
)
);
Dealbranch模型
var $belongsTo = array(
'Deal' => array(
'className' => 'Deal',
'foreignKey' => 'DL_ID',
'dependent' => true
),
'Branch' => array(
'className' => 'Branch',
'foreignKey' => 'DLB_BR_ID',
)
);
交易模式
var $hasMany = array(
'Dealbranch' => array(
'className' => 'Dealbranch',
'foreignKey' => 'DLB_DL_ID',
)
);
在控制器中我使用过
$this->Branch->delete($id,true);
现在我在这里删除分支,所以依赖的dealbranch已成功删除,但没有删除任何交易记录
我想要:我正在删除分支,因此应该删除所有依赖的dealbranch并删除所有依赖(依赖于dealbranch)交易记录
这里Deal是Dealbranch的孩子,Dealbranch是分店的孩子
现在,对于一个分支,Dealbranch中有多个记录,对于多个Dealbranch,Deal中有一条记录
请帮帮我。我正在使用cakephp 2
答案 0 :(得分: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
)
);
或者您可以尝试这样
<强>更新强>
根据您的要求这里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
),
);
交易模型应该是这样的。
交易模式
var $belongsTo = array(
'Dealbranch' => array(
'className' => 'Dealbranch',
'foreignKey' => 'DLB_DL_ID',
)
);
答案 1 :(得分:0)
虽然我知道cakephp上的人不在他们的数据库中使用外键并依赖框架来处理这些细节,但是如果框架给你带来问题并且你可以控制数据库更新你的外国人DELETE DB操作中CASCADE的关键约束。
答案 2 :(得分:0)
基本问题在于您的数据模型。根据您的模型,任何分支都可以连接到零个或多个交易,反之亦然。因此,如果删除分支,删除任何交易都没有任何意义,因为交易可能与另一个分支相关。如果交易被删除,数据库完整性将被破坏。
您使用的设置通常用于模拟M:N关系。 1
如果你的数据模型是整个画面:
你真正想要的是什么:
分支模型
var $hasMany =array(
'Deal' => array(
'className' => 'Deal',
'foreignKey' => <set_according_to_your_column_names>,
'dependent' =>true
)
);
交易模式
var $hasMany = array(
'Branch' => array(
'className' => 'Dealbranch',
'foreignKey' => <set_according_to_your_column_names>,
)
);
这样,您只能在控制器中调用:
$this->Branch->delete($id,true);
甚至
$this->Branch->delete($id);
因为默认情况下第二个参数为真。
1 M:N关系的例子是人 - 地址。任何人都可以使用多个地址(例如家庭和工作),一个地址可以由更多人(家人,同事)共享。