1

在 cakephp 中,模型的“hasMany”字段中有一个名为“exclusive”的选项。文档说:

当 Exclusive 设置为 true 时,递归模型删除通过 deleteAll() 调用进行删除,而不是单独删除每个实体。这极大地提高了性能,但可能并不适用于所有情况。

但还不是很清楚。我想知道这个选项究竟做了什么,如果我们不使用它会发生什么?谢谢。

4

1 回答 1

0

比如说,一个作者有很多书。所以我们可以用 $hasMany 关联的形式写这个,如下所示,

   var $name = 'Author';
       var $hasMany = array('Book' =>
        array('className' => 'Book',
            'conditions' => '',
            'foreignKey' => 'author_id',
            'dependent' => true,
            'exclusive' => true

        )
    );

dependent:当dependent 设置为true 时,可以进行递归模型删除。在此示例中,图书记录将在其关联的作者记录已被删除时被删除。

Exclusive - 如果设置为 true,则在一个 SQL 语句中删除所有关联的对象,而不运行它们的 beforeDelete 回调。这极大地提高了性能,但可能并不适合所有情况。

现在只看数据库中的记录

authors table
===================
id    name    
===================
1     first author
2     second author 
3     third author

书桌

==================================
id   title   isbn       author_id
==================================  
1    abc    6416446846   1
2    xyz    3146354313   1
3    pqr    8945468485   2
4    fgh    6434164656   2
5    rtt    1215445644   3

现在,如果您删除任何作者记录,与该特定作者相关的所有书籍也将被删除。

于 2013-08-09T13:59:44.133 回答