Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/246.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
cakephp 1.3分页habtm相关数据_Php_Cakephp_Pagination_Cakephp 1.3_Has And Belongs To Many - Fatal编程技术网

cakephp 1.3分页habtm相关数据

cakephp 1.3分页habtm相关数据,php,cakephp,pagination,cakephp-1.3,has-and-belongs-to-many,Php,Cakephp,Pagination,Cakephp 1.3,Has And Belongs To Many,我到处寻找,尝试了多种不同的解决方案,但我似乎无法让它发挥作用。 基本上我有产品和类别。 类别有并属于许多产品,产品有HABTM类别。在连接表products\u categories中,它们显然与id、product\u id、category\u id字段相关 在简单的完全烘焙之后-烘焙模型视图和控制器-添加一些类别和产品并设置它们的关系,我可以转到特定的类别视图页面,预烘焙视图将显示与此类别相关的产品 然而,有相当多的产品(而且还会更多),我正在努力解决如何对所有这些相关数据进行分页……因

我到处寻找,尝试了多种不同的解决方案,但我似乎无法让它发挥作用。 基本上我有产品和类别。 类别有并属于许多产品,产品有HABTM类别。在连接表products\u categories中,它们显然与id、product\u id、category\u id字段相关

在简单的完全烘焙之后-烘焙模型视图和控制器-添加一些类别和产品并设置它们的关系,我可以转到特定的类别视图页面,预烘焙视图将显示与此类别相关的产品

然而,有相当多的产品(而且还会更多),我正在努力解决如何对所有这些相关数据进行分页……因为仅仅列出一个类别中的所有产品是不可行的(可能有100个或更多) 有人能帮忙吗?在这方面似乎有很多未回答的话题和各种不同的解决方案,没有一个我可以去工作!请帮忙

CakePHP控制器具有。文档非常详尽,因此我建议先阅读。之后,我很乐意回答你关于这个问题的任何问题

在不了解具体代码的情况下,下面是一个简单的示例,说明如何对模型数据进行分页:

class CategoryController extends AppController {
    var $paginate = array(
        'Product' => array(
            'joins' => array(
                array(
                    'table' => 'categories_products', // or products_categories
                    'alias' => 'CatFilter',
                    'type' => 'INNER',
                    'conditions' => array(
                        'CatFilter.product_id = Product.id'
                    )
                )
            ),
            'limit' => 10
         )
    );

    function view ($category_id) {
        $this->set(
            'products', $this->paginate(
                $this->Category->Product, array(
                    'CatFilter.category_id' => $category_id
                )
             )
        );
    }
}

你应该读这篇文章
当然,您也可以在find查询中使用join,这与您的问题无关,但CakePHP约定表明您的
产品\u类别
表应该命名为
categories\u产品
我不明白?它被命名为products\u categories,似乎工作正常。以另一种方式命名表会有什么区别?在文档中“在hasAndBelongsToMany(HABTM)中使用的连接表,模型之间的关系应以它们将按字母顺序连接的模型表命名(苹果\u斑马而不是斑马\u苹果)。”这样做可以让cake应用更多的“魔力”,避免模型中的样板代码告诉它要使用哪个表。啊,谢谢!那么我应该重命名我的模型吗?从产品类别到产品类别。问过这个问题后,拥有一个类别产品(或其他)模型/控制器有什么用,还是不必要?(它只是在烘焙所有脚本中烘焙)谢谢!等待您已经创建了ProductsCategory模型吗?你应该删除它。Cake在运行应用程序时为连接表动态生成HABTM模型。只要您将表重命名为
categories\u products
,我就已经阅读了分页部分,找不到任何与我的问题相关的内容。我会重读一遍,但这里有没有我特别缺少的东西?谢谢。修正了一个错误的部分。如果你已经尝试过我的方法,但失败了,现在就试试。这很有效!杰出的然而,小问题是,“下一页”不可浏览,它从/categories/view/1/转到categories/view/page:2取消,这是由于从另一个视图文件中插入(粘贴)了一些冗余代码。非常感谢!不客气!顺便说一句:像这样使用过滤表连接让我能够在CakePHP中做很多伟大的事情。您应该仔细阅读这些连接,并尝试完全遵循我在这里所做的,因为您将不可避免地再次使用它。