如果SQLSTATE [23000]外键cakephp,如何设置sessionflash

时间:2014-12-05 23:18:35

标签: cakephp

我有两张桌子:

Picture

当我尝试删除product_categories时,它会显示以下错误:

SQLSTATE[23000] Integrity constraint violation: 1451 Cannot delete or update a parent row: a foreign key constraint fails 

如果错误,我想设置会话闪存吗?

1 个答案:

答案 0 :(得分:0)

如果没有您编写的实际代码,很难回答,但这是基于您分享的内容很少的通用答案。有关详细信息,请访问Cake网站this link

假设你是从控制器中调用它

if ($this->ProductCategory->deleteAll(array('conditions' => array('id' => $someId)) {
    // do something else - set success flash message
    $this->Session->setFlash('Something good.', 'default', array(), 'good');
} else {
    // error occurred
    $this->Session->setFlash('Something bad.', 'default', array(), 'bad');
}

您还可以通过在上面的delete语句中设置其他参数来将删除级联到子表 - 这也可以在同一链接中找到。如果你要级联删除,那么语句将如下所示 - 注意TRUE作为第二个参数

if ($this->ProductCategory->deleteAll(array('conditions' => array('id' => $someId), true) {
    // do something else - set success flash message
    $this->Session->setFlash('Successfully deleted the Product Category', 'default');
} else {
    // error occurred
    $this->Session->setFlash('Cannot delete Product Category. Some Products are still using this Category.', 'default');
}

另外我建议您不要在数据库中强制执行完整性约束 - 没有任何问题,但它会使您的逻辑更复杂。