CakePHP的模型类提供了一些方法来从数据库删除记录。
delete
delete(integer $id = null, boolean $cascade = true);
删除这个记录被$ id。默认情况下,还依赖于指定的记录删除记录被删除。
例如,当删除一个用户记录,与许多配方记录(用户“hasMany”或“hasAndBelongsToMany”食谱):
如果美元级联设置为true,相关配方记录也删除模型的dependent-value是否设置为true。
如果美元级联设置为false,配方记录用户被删除后将继续。
如果您的数据库支持外键和级联删除,通常是更有效率的依赖比CakePHP的级联功能。使用模型的级联特性的一个好处Model::delete(),它允许您利用行为和模型回调函数:
$this->Comment->delete($this->request->data('Comment.id'));
你可以把自定义逻辑删除过程使用beforeDelete和afterDelete回调模型和行为。有关更多信息,请参见回调方法。
deleteAll
deleteAll(mixed $conditions, $cascade = true, $callbacks = false)
deleteAll() delete()类似,除了deleteAll()将删除所有记录匹配提供的条件。$条件数组应该作为SQL提供片段或数组。
环境条件相匹配
级联布尔,删除记录设置为true,取决于这个记录
回调布尔,跑回调
返回布尔真正的成功,如果执行失败将返回false。
例子:
// Delete with array conditions similar to find()
$this->Comment->deleteAll(array('Comment.spam' => true), false);
如果你与回调函数和/或级联删除,会被发现,然后删除行。这往往会导致更多的查询。协会将重置在匹配的记录被删除之前deleteAll()。如果你使用bindModel()或unbindModel()改变的关联,你应该设置重置为假。
请注意
deleteAll()将返回true即使没有记录删除,删除查询是成功的条件,没有匹配的记录依然存在。