0

Zend Framework に DRI レイヤーを提供させるという私の問題は、そのように要約できるようになりました。

以下のクラス定義を使用すると、参照マップとテーブル関係の定義を設定したにもかかわらず、ユーザーを削除できますが、ローカルの UserController "public/users/delete/userId/22" を介して関連するコメントを削除することはできません。

ユーザー レコードを削除しても、関連付けられているコメント レコードが削除されない理由について、誰か答えがありますか?

    class Default_Model_DbTable_Comment extends Zend_Db_Table_Abstract
    {
        /**
         * @var string Name of the database table
         */
        protected $_name = 'comment';

        /**
         * @desc  reference map 
         * 
         * Rows in the comment table are to be automatically deleted if the row in the 
     * User table to which they refer is deleted
     *    
     */
     protected $_referenceMap = array(
        'User' => array(
            'columns'       => 'user_id',   // the foreign key(s)
            'refTableClass' => 'Default_Model_DbTable_Users',
            'refColumns'    =>  'id',
            'onDelete'      =>  self::CASCADE,
        )
    );

}
class Default_Model_DbTable_Users extends Zend_Db_Table_Abstract
{
    /**
     * @var string Name of the database table
     */
    protected $_name = 'users';


     /**
     * @desc Defining referential integrity here since we are using MyISAM
     * Dependent tables are referred via the class name. 
     */
    protected $_dependentTables = 'Default_Model_DbTable_Comment';



}
4

1 に答える 1

0

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

class Default_Model_DbTable_Users extends Zend_Db_Table_Abstract
{
    /**
     * @var string Name of the database table
     */
    protected $_name = 'users';


     /**
     * @desc Defining referential integrity here since we are using MyISAM
     * Dependent tables are referred via the class name. 
     */
    protected $_dependentTables = array('Default_Model_DbTable_Comment');



}

それらが配列にリストされていない場合、エラーが発生します

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

このエラーは、お使いの環境では表示されなかった可能性があります。

于 2009-07-22T09:30:49.263 に答える