【问题标题】:Zend Framework Delete CascadeZend 框架删除级联
【发布时间】:2012-04-27 20:13:47
【问题描述】:

您好,我正在使用 zend 框架,但在删除级联时遇到问题。

我在 Zend db 表中有两个实体,称为 User,另外两个(因为我有 2 个用户)连接到 User

用户是

class Application_Model_DbTable_User extends Zend_Db_Table_Abstract
{
protected $_name = 'user';
protected $_primary = 'username';    
protected $_dependentTables = array('Cliente','Trainer');
}

另一个是

class Application_Model_DbTable_Trainer extends Zend_Db_Table_Abstract{
protected $_name = 'trainer';
protected $_primary = 'idusername';

protected $_referenceMap = array(
    'Utente' => array(
        'columns' => array('idusername'), 
        'refTableClass' => 'user', 
        'refColumns' => array('username'),
        'onDelete' => self::CASCADE
    )
);

protected $_dependentTables = array('Trainermaster','Presenza','Uscita');}

当我对 User 对象使用 delete 选项时,Zend 只删除 User 表中的用户,而不是 Trainer 表中的用户...

我在mysql数据库中也设置了删除级联以更安全,但它不起作用。

【问题讨论】:

    标签: zend-framework zend-db-table


    【解决方案1】:

    $_dependentTables 必须引用您的类名,而不是您的数据库表名:

    protected $_dependentTables = array('Application_Model_DbTable_Cliente',
                                        'Application_Model_DbTable_Trainer');
    

    【讨论】:

    • 另一个错误是 'refTableClass' => 'user',我应该在其中写 Application_Model_DbTable_User 但它不再起作用...如果我使用 ->delete($where) zend 系统删除仅在用户表中...如果我使用 ->_cascadeDelite 什么都没有...
    • 我正在使用最新版本的 mysql...我在 Zend_Db_Table 中使用带有此约束的 myisiam 表。现在我正在尝试删除 zend 中的所有依赖表,并使用 InnoDb 表...我希望这会起作用。
    猜你喜欢
    • 2014-12-20
    • 1970-01-01
    • 2014-04-30
    • 1970-01-01
    • 1970-01-01
    • 2020-08-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多