【问题标题】:CakePHP Pagination of associated HABTM model in Model View Controller模型视图控制器中关联 HABTM 模型的 CakePHP 分页
【发布时间】:2012-11-15 00:08:36
【问题描述】:

我有两个模型 - 产品和类别 类别型号HABTM产品

当我创建视图控制器来查看单个类别时,我的递归设置为 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 -- ???



}

有人吗?

【问题讨论】:

    标签: cakephp pagination cakephp-2.0


    【解决方案1】:

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

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

    问候 func0der

    【讨论】:

      【解决方案2】:

      Pagination documentation中,搜索以下文字

      以您要配置的模型命名数组的键

      这包括如何处理多个和/或“其他”模型。简而言之,你想要的东西看起来像:

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

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

      【讨论】:

      • 感谢您的回复……但如果您再看看我的问题,这不是如何从产品控制器对产品进行分页。它是如何从 CATEGORIES 控制器加载的产品中对产品进行分页,其中的类别是 HABTM 产品。也许我不是很清楚,代码现在标记。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-30
      • 1970-01-01
      相关资源
      最近更新 更多