mysql - 一次查询删除 CAKEPHP 3 中所有关联表的数据
问题描述
我有一个表产品和一些通过product_id 与它连接的表。当产品从产品表中删除时,我想从所有其他表中删除此产品 ID 的所有行。现在怎么能以方便的方式做到这一点?我正在尝试如下:
$productTable = [
'related_products',
'quantities',
'products_tags',
'products_settings',
'products_details',
'categories_products',
];
$tableObj = TableRegistry::get('Products');
$query = $tableObj->query();
$result = $query->deleteAll()
->contain($productTable)
->where(['store_id' => $storeId])
->execute();
解决方案
在 Cakephp 中有一个依赖属性可以从其他表中删除相关数据。
当依赖键设置为 true 并删除实体时,关联的模型记录也将被删除。在这种情况下,我们将其设置为 true,以便删除用户也会删除她关联的地址。
要使用它,只需创建您的association
并添加dependent
true。例如
/* In a Table's initialize method. */
$this->hasMany('Comments', [
'dependent' => true, /* Add this line */
]);
推荐阅读
- ruby-on-rails - 在 Rails 中,最好以符号形式获取变量名的最简洁方法是什么?
- processing.js - 未捕获的类型错误:无法读取未定义的属性“子字符串”-Processing.js
- angular - 未找到模块:错误:无法解析 /node_modules/ng2-charts/fesm2015 中的“chart.js”
- html - 未应用 css
- javascript - 如果在输入字段之外按下键,则不会触发 keyup 事件
- bash - awk 中的 Base64 实用程序
- ios - 以与背景中的主要 UIImage 颜色相同的颜色覆盖 UIView
- firebase - Firebase(单个)文档触发器停止工作
- javascript - 承诺中的 Vue $emit
- nginx - 为什么我的烧瓶应用程序不显示 nginx