模型视图控制器中关联HABTM模型的CakePHP分页

时间:2012-11-15 00:08:37

标签: cakephp pagination cakephp-2.0

我有两种型号 - 产品和类别 分类型号HABTM产品

当我创建一个View控制器来查看单个类别时,我的递归设置为1,因此我可以加载该类别中的产品。这很简单,工作正常。

但是,我怎样才能对该类别中的产品进行分页和/或排序。我已经尝试了三种或四种不同的方法,但没有一种方法让我满足我的期望 - 我可以将分页产品传递给视图以创建排序/分页产品的网格。

这是控制器,所有标准的东西:

//CATEGORY CONTROLLER
public function view($id = null) {


    $category = $this->Category->find('first', array(
        'recursive' => 1,
        'conditions' => array('Category.id' => $id)
    ));

    if (empty($category)) {
        $this->redirect(array('action' => 'index'), 301);
        $this->Session->setFlash('The category could not be found.');
    }
    $this->set(compact('category'));

    // paginate products and make them available to view -- ???



}

任何?

2 个答案:

答案 0 :(得分:0)

Pagination documentation中,搜索以下文字

  

在您要配置的模型之后命名数组的键

这包括如何处理多个和/或“其他”模型。简而言之,您需要的内容如下:

// CategoriesController::view()
$this->paginate = array(
    'Product' => array(
        'conditions' => array('Product.category_id' => $category_id)
    ),
);
$products = $this->paginate('Product');
$this->set(compact('products'));

请注意,条件现在安排在名为“产品”的键下。

答案 1 :(得分:0)

与此处提出的另一个问题相同。 解决方案:how to get books from one category excluding other category (through cross table)

将链接模型与分页相结合,您就完成了。在获取所有相关产品后,您只需按product_id而不是category_id进行过滤。 使用链接模型进行分页查找也应该有效。从来没有尝试过。试试吧;)

问候 func0der