在 CakePHP 模型中为依赖项添加条件?(或同时依赖多个事物)


Add conditions to dependencys in CakePHP models? (or have dependent on multiple things together)

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.