【问题标题】:Zend_Db_Table Cascade DELETE doesn't workZend_Db_Table 级联删除不起作用
【发布时间】:2011-02-15 22:15:42
【问题描述】:

我正在使用 zend 框架 1.10、PHP 5.3 和 MySQL 开发一个管理律师事务所的应用程序,我已经在两个表之间建立了关系,我想进行级联删除但是它不起作用,我尝试了所有可能性,但是没什么……

这是父模型,引用所有进程

<?php
class Application_Model_ProcessosJudicial extends Zend_Db_table {

    protected $_name = "processos_judicial";
    protected $_dependentTables = array('Application_Model_Partes', 'Application_Model_Andamentos');
    protected $_referenceMap = array(
        'Andamento' => array(
            'columns' => array('numero_atual'),
            'refColumns' => array('numero_atual'),
            'refTableClass' => 'Application_Model_Andamentos',
            'onDelete' => self::CASCADE,
            'onUpdate' => self::RESTRICT
        )
    );    

这里是引用进程状态的模型

class Application_Model_Andamentos extends Zend_Db_table {

    protected $_name = "processos_andamentos_judicial";
    protected $_referenceMap = array(
        'Andamento' => array(
            'refTableClass' => 'Application_Model_ProcessosJudicial',
            'refColumns' => array('numero_atual'),
            'columns' => array('numero_atual'),
            'onDelete' => self::CASCADE,
            'onUpdate' => self::RESTRICT
        )
    );

当我要删除一个进程时,它会返回给我

注意:未定义索引:C:\htdocs\Advocacia\library\Zend\Db\Table\Abstract.php 第 1197 行中的 numero_atual

它删除进程,但所有进程的状态都保留在数据库中。

任何人都可以看出有什么不对吗?

【问题讨论】:

  • 你有关于 numero_atual 的索引吗?
  • ZF 1.10 不支持 PHP 4.3.. 你是说 PHP 5.3 吗?
  • 您的 Application_Model_ProcessosJudicial 类包含应仅在 Application_Model_Andamentos 类中的 _referenceMap 定义。这可能是您收到 Undefined index 警告的原因。
  • @Billy ONeal numero_atual 是两个数据库表中都存在的列@Stephen J. Fuhry 抱歉,它是 5.3
  • @Vika 我更改了 refTableClass 但是仍然没有删除与进程相关的所有进程状态

标签: zend-framework zend-db zend-db-table


【解决方案1】:

将numero_atual添加到primary,解决问题。

protected $_primary = array("id", "numero_atual");

【讨论】:

    猜你喜欢
    • 2013-06-22
    • 2013-03-03
    • 2012-11-18
    • 2011-06-11
    • 2018-06-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多