通过一个查询删除CAKEPHP 3中所有关联表的数据

时间:2019-01-07 05:54:23

标签: mysql cakephp-3.0

我有一个表产品,还有一些表由product_id与它连接。从产品表中删除产品时,我想从所有其他表中删除此product_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();

1 个答案:

答案 0 :(得分:0)

在Cakephp中,有一个从属属性可以从其他表中删除关联的数据。

  

当相关键设置为true并删除实体时,   关联的模型记录也将被删除。在这种情况下,我们将其设置为   true,以便删除用户也将删除其关联的地址。

要使用此功能,只需创建您的association并添加dependent true。对于例如

/* In a Table's initialize method. */
$this->hasMany('Comments', [
    'dependent' => true,  /* Add this line */
]);

Cake -> Associations - Linking Tables Together