CakePHP 2.5.4中的关联删除

时间:2016-06-24 11:24:35

标签: php cakephp

我在数据库Element和Section中有2个实体。

1节有0-N元素所以在元素表中我有一个外键

CONSTRAINT `elements_sections` FOREIGN KEY (`section_id`) REFERENCES `sections` (`id`) ON UPDATE CASCADE ON DELETE CASCADE

元素模型.php有这个:

public $belongsTo = array(
        'Section' => array(
            'className' => 'Section',
            'foreignKey' => 'section_id',
            'conditions' => '',
            'fields' => '',
            'order' => ''
        )
    );

在Section模型中我有:

public $hasMany = array(
    'Element' => array(
        'className' => 'Element',
        'foreignKey' => 'section_id',
        'dependent' => false,
        'conditions' => '',
        'fields' => '',
        'order' => '',
        'limit' => '',
        'offset' => '',
        'exclusive' => '',
        'finderQuery' => '',
        'counterQuery' => ''
    )
);

但是,当我删除I​​D = X的部分的元素时,所有这些代码看起来都很好,如果有一个ID = X的元素(在任何其他部分中),该元素也被删除。这是我在整个应用程序中使用的代码,但只是失败了。 $ this-> data是Element对象。

$this->Element->delete($this->data)

一个详细的例子:

第20节 - >元素400 第3节 - >元素20

如果删除元素400,则元素20也将被删除。

我想我错过了一个配置参数或一些。

提前致谢。

1 个答案:

答案 0 :(得分:0)

对于可能面临同样问题的人来说,这可能有所帮助:

Model :: delete()可以删除多条记录。

DELETE FROM elements WHERE id IN (1, 3, 10000).

将生成

10-00-000-000000