hasMany中的独家选项是什么?

时间:2013-08-09 07:00:01

标签: php cakephp cakephp-2.0

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

  

当exclusive设置为true时,递归模型删除使用deleteAll()执行删除操作   调用,而不是单独删除每个实体。这大大提高了性能,但可能不是   适合所有情况。

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

1 个答案:

答案 0 :(得分:0)

Say For Example,One Author有很多Books.So我们可以用$ hasMany关联的形式写这个,如下所示,

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

        )
    );

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

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

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