0


0

Zend FrameworkにDRIレイヤを提供させる私の問題は、そのようにまとめることができます。

以下のクラス定義を使用すると、自分のローカルUserController "public / users / delete / userId / 22"を介してユーザーを削除できますが、関連コメントは削除できません。

ユーザーレコードを削除しても関連するコメントレコードが削除されないのはなぜですか?

Default_Model_DbTable_CommentクラスはZend_Db_Table_Abstractを継承しています{/ **
         *  @var stringデータベーステーブルの名前* / protected $ _name = 'comment';

/ **
         *  @desc参照マップ
         *  コメントテーブルの行は、コメントテーブルの行が
     *  参照しているユーザーテーブルが削除されている
     *  * / protected $ _referenceMap = array( 'User' => array( 'columns' => 'user_id'、//外部キー 'refTableClass' => 'Default_Model_DbTable_Users'、 'refColumns' => 'id'、 'onDelete' => self :: CASCADE、));

Default_Model_DbTable_UsersはZend_Db_Table_Abstractを拡張したものです。{/ **
     *  @var文字列データベーステーブルの名前* / protected $ _name = 'users';

/ **
     *  MyISAMを使用しているため、ここで参照整合性を定義します。
     *  従属テーブルはクラス名を介して参照されます。 * / protected $ _dependentTables = 'Default_Model_DbTable_Comment';


}

1 Answer


0


私はあなたのモデルとしてモデルを作成しましたが、テストの結果、依存テーブルが配列にリストされている場合にのみ機能するようです。

Default_Model_DbTable_UsersクラスはZend_Db_Table_Abstractを継承しています{/ **
     *  @var文字列データベーステーブルの名前* / protected $ _name = 'users';

/ **
     *  MyISAMを使用しているため、ここで参照整合性を定義します。
     *  従属テーブルはクラス名を介して参照されます。 * / protected $ _dependentTables = array( 'Default_Model_DbTable_Comment');


}

それらが配列にリストされていないとき、私はエラーを得ます

警告:632行目のC:\ PHP \ includes \ ZendFramework-1.8.4-minimal \ library \ Zend \ Db \ Table \ Row \ Abstract.phpでforeach()に無効な引数が指定されています

このエラーはあなたの環境では見えていないかもしれません。