2012-06-27 54 views
1

我有两个模型分类和项目。类别可以有很多项目,项目可以有很多种类,因此它们之间的关系是HABTM。 我的问题是,即使项目在里面,也可以删除一个类别。 我有一个外键在数据库表categories_items RESTRICTS删除,但它没有帮助。 我应该怎么做才能防止类别被删除?HABTM删除约束条件

回答

1

您需要覆盖您的CategoriesController中的实际“删除”方法,以验证删除之前类别中是否没有任何项目。

喜欢的东西...

$c = $this->Category->findById($id); 
$rels = $this->CategoriesItem->find('count', array('conditions' => array('CategoriesItem.category_id' => $id))); 

if(count($rels) > 0) $this->Session->setFlash("NO WAY JOSE"); 
else $this->Category->delete($id); 
+0

我认为这更多的东西蛋糕上下的(如1号线在模型文件或东西...)。我想我会在这种情况下使用模型中的beforeDelete回调函数。 Tnx – SimonM

+0

在模型文件中有一个选项叫'依赖',您可以指定所有属于相关模型在hasMany对象被删除时将被删除,但对于HABTM没有任何(据我所知) – tigertrussell