Zend framework 如何在zend框架中对两个表进行分页

Zend framework 如何在zend框架中对两个表进行分页,zend-framework,pagination,zend-db,zend-db-table,Zend Framework,Pagination,Zend Db,Zend Db Table,书籍具有以下字段 书号 书名 图书作者 图书出版日期 类别表有 类别识别码 类别名称 放置表具有 位置标识 安置\类别\标识(FK) 位置\书本\ id(FK) 现在我们想在索引控制器中使用分页来 选择具有特定类别的书籍? 所有表都在一个数据库中 注意:我对每个表都有单独的模型,所有表都与$\u referenceMap相互关联 我使用$adapter=new Zend_Paginator_adapter_DbTableSelect($select) 问题是:如何使$select?

书籍具有以下字段

  • 书号
  • 书名
  • 图书作者
  • 图书出版日期
类别表有

  • 类别识别码
  • 类别名称
放置表具有

  • 位置标识
  • 安置\类别\标识(FK)
  • 位置\书本\ id(FK)
现在我们想在索引控制器中使用分页来 选择具有特定类别的书籍?
所有表都在一个数据库中


注意:我对每个表都有单独的模型,所有表都与$\u referenceMap相互关联
我使用$adapter=new Zend_Paginator_adapter_DbTableSelect($select)

问题是:如何使$select?

您可以使用此分页类:


它的设置和使用非常简单,然后将其应用于一个联合查询,该查询从特定类别中选择所有书籍(这里的许多人比我解释得更好)。

书籍和类别之间存在多对多关系,并且放置表是一个交集表。因此,我认为构建$select的一种方法是使用内部连接,如下所示:

    $placementModel = new Your_Model_Table_Placement();

    $select = $placementModel->select(Zend_Db_Table::SELECT_WITH_FROM_PART)->setIntegrityCheck(false);
    $select->joinInner('BOOKS', 'BOOKS.book_id = PLACEMENT.placement_book_id');
    $select->where('PLACEMENT.placement_category_id = ?', $categoryID);

    $adapter = new Zend_Paginator_Adapter_DbTableSelect($select);

    // check the result if they are what you expect
    var_dump($adapter->getItems(0, 5)->toArray());
当然,表和模型的名称必须与您的真实姓名匹配。 另一种方法是在数据库中创建视图。然后为视图创建一个模型。这将使$select变短