0

データベースからエンティティを削除しようとすると、エラーをキャッチして処理する必要があります。

[レコード削除エラー: SQLSTATE[23000]: 整合性制約違反: 1451 親行を削除または更新できません: 外部キー制約が失敗しました ( zdf. cats, CONSTRAINT FK_cats_CategoriesFOREIGN KEY ( category_id) REFERENCES categories( id) ON DELETE NO ACTION ON UPDATE NO ACTION)]

「deleteURL」でボタンをクリックしてエンティティを削除しようとしています

  $dbCategories = new Application_Model_DbTable_Categories();
    $source = new Bvb_Grid_Source_Zend_Select($dbCategories->getCategoriesByAppId(1, true));
        $columns = array('title', 'actions');
        $columnsPositions = array('title');
        $extraColumns = array(
            0 => $this->createExtraColumn(array(
                'name' => 'actions',
                'position' => 'right',
                'title' => 'Actions',
                'decorator' => '<a class="edit-button" href="{{editUrl}}">&nbsp;</a><a class="remove-button" href="{{deleteUrl}}">&nbsp;</a>'
            ))
    );
4

2 に答える 2

1

ZF DataGrid でこのエラーをキャッチする方法が、コンポーネント ライブラリで何もしないと見つからなかったので、URL パラメーターに応じて自分で削除しました。

基本的に、

$deleteId =  $this->getRequest()->getParams('Delete');

次にTry...Catchブロックします$model->delete($id);

手動で例外を処理します。

于 2012-09-02T07:51:09.607 に答える
0

Try/Catch ブロックを使用するのはどうですか?

try {
    $dbCategories = new Application_Model_DbTable_Categories();
    $source = new Bvb_Grid_Source_Zend_Select($dbCategories->getCategoriesByAppId(1, true));
    $columns = array('title', 'actions');
    $columnsPositions = array('title');
    $extraColumns = array(
        0 => $this->createExtraColumn(array(
            'name' => 'actions',
            'position' => 'right',
            'title' => 'Actions',
            'decorator' => '<a class="edit-button" href="{{editUrl}}">&nbsp;</a><a class="remove-button" href="{{deleteUrl}}">&nbsp;</a>'
        ))
    );
} catch (Exception $e) {
    // handle exception here...
}
于 2012-07-10T14:40:02.483 に答える