User
向网站提交Event
Upload
(如图像)。
如果用户或事件被删除,图像应保留 - 但如果用户和事件都被删除,则上传也应被删除。
这可以通过在模型中设置 CakePHP 的dependent
来完成吗? 它可以依赖于这两件事的组合吗? 或者 - 我可以在'dependent'=>true
中添加条件吗?
例如:
var User = array(
'Upload' => array(
'dependent' => true,
//can I set a condition here? Or pass array w/ conditions to line above?
),
);
我对 Cake 相当陌生,所以如果我错过了这条船 - 即如果有另一种更好的方法,请随时告诉我。
到目前为止,我唯一的想法是让它不依赖,并在所有需要的条件下自己运行删除查询 - 但希望 CakePHP 能够内置这样的东西。
最好在 afterDelete() 中做一些检查,例如:
User::afterDelete(){
// if !$this->Event->find(...conditions...); delete the image
}
Event::afterDelete(){
// if !$this->User->find(...conditions...); delete the image
}
您也可以以类似的方式将 beforeDelete() 与检查一起使用,如果满足条件,则通过关系动态设置"依赖"
无法在参数的"依赖"选项上设置条件
在模型中调用 delete 方法时,请将第二个选项设置为 true。
在模型中将 BeforeDelete/AfterDelete 方法与 http://book.cakephp.org/view/1036/delete
结合使用delete(int $id = null, boolean $cascade = true);
删除由$id标识的记录。默认情况下, 还会删除依赖于指定要删除的记录的记录。
例如,删除与许多配方记录(用户"hasMany"或"hasAndBelongsToMany"配方)关联的用户记录时:
if $cascade is set to true, the related Recipe records are also deleted if the models dependent-value is set to true.
if $cascade is set to false, the Recipe records will remain after the User has been deleted.