2011-05-23 38 views
1

A User向网站提交EventUpload(如图片)。将条件添加到CakePHP模型中的依赖项? (或一起依赖于多件事)

如果用户或事件被删除,图像应该保留 - 但是如果两者同时用户和事件被删除,上传也应该被删除。

这可以通过在模型中设置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? 
    ), 
); 

我是相当新的蛋糕,所以如果我错过了船 - 也就是说,如果有另一种更好的方式来做到这一点,随时让我知道。

我唯一的想法到目前为止是只拥有它不依赖,并运行删除查询自己瓦特/所有必要条件 - 但希望CakePHP的将有这样的事情内置

回答

2

它很可能是最好的。做了一下检查的afterDelete(),例如:

User::afterDelete(){ 
// if !$this->Event->find(...conditions...); delete the image 
} 

Event::afterDelete(){ 
// if !$this->User->find(...conditions...); delete the image 
} 

,你也可以用类似的方式进行检查使用beforeDelete(),如果条件得到满足通过关系设置“依赖”动态

有没有办法设置条件的“从属”选项中的条件

+0

这将是模型?你能添加一个链接到有关这方面的信息吗? (非常感谢) – Dave 2011-05-23 20:25:46

+0

beforeDelete和afterDelete是模型回调,所以是在model.http://book.cakephp.org/view/1048/Callback-Methods – dogmatic69 2011-05-24 09:20:14

0

在模型中调用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. 
+0

我不认为你完全理解/阅读这个问题。不过,我很欣赏你的尝试。 – Dave 2011-05-24 14:48:59