【问题标题】:Joining tables in Zend Framework throwing application error在 Zend Framework 中加入表引发应用程序错误
【发布时间】:2013-10-27 13:55:48
【问题描述】:

将 Zend Framework 库升级到 1.12 后,我遇到了这个问题。它在 1.11 版上运行良好。

问题是当我加入两个表时,我得到了这个错误:

应用程序错误

异常信息:

消息:指定的 Table 没有与 Row 相同的列

此错误是从 Zend/Db/Table/Row/Abstract.php 生成的(第 356 行

我的表结构

Members:
  id (int)
  name (varchar)
  age (int)
  family_id (varchar)

Family:
  id (int)
  family_type (varchar)

我的模特:

class Model_Member extends Zend_Db_Table_Abstract
{
    public function getAll($params = array())
    {
        $select = $this->select();
        $select->setIntegrityCheck(false);

        $select->from("members", array('name', 'family_id'));
        $select->join('family', 'family.id = members.family_id', array('family_type'));

        $paginator = Zend_Paginator::factory($select);
        $paginator->setItemCountPerPage(20);
        $paginator->setCurrentPageNumber(1);
        $paginator->setPageRange(10);

        return $paginator;
    }
}

然后在我的视图文件中

foreach($this->paginator as $row)
{
}

【问题讨论】:

    标签: php zend-framework jointable


    【解决方案1】:

    在你的模型中试试这个:

        class Model_Member extends Zend_Db_Table_Abstract
        {
        public function getAll($params = array(), $paged = 1)
       {
        $select = $this->select();
        $select->setIntegrityCheck(false);
    
        $select->from("members", array('name', 'family_id'));
        $select->join('family', 'family.id = members.family_id', array('family_type'));
    
        $adapter = new Zend_Paginator_Adapter_DbTableSelect($select);
        $paginator = new Zend_Paginator($adapter);
        $paginator->setItemCountPerPage(5)
                  ->setCurrentPageNumber((int) $paged);
    
        return $paginator;
        }
     }
    

    并查看:

    <?php if($this->data instanceof Zend_Paginator): ?>
                                   <?php echo $this->paginationControl($this->data,
                                                                         'Sliding',
                                                                                'pathToController/_paginator.phtml', array('params'=>$params);?>// if you want pass some params. 
    

    应该在你的应用上工作,在我的应用上工作。

    【讨论】:

    • 还是不行。我仍然遇到同样的错误。您是否尝试过连接两个表,然后使用 zend 框架 v1.12 从连接的表中选择几列?你的意思是说这适用于你 v1.12
    猜你喜欢
    • 1970-01-01
    • 2011-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多