CakePHP与HABTM模型分页

nic*_*ckf 3 php pagination cakephp

我在创建HABTM关系分页方面遇到了一些问题.一,表格和关系:

requests (id, to_location_id, from_location_id)
locations (id, name)
items_locations (id, item_id, location_id)
items (id, name)
Run Code Online (Sandbox Code Playgroud)

因此,请求具有请求来自的位置以及请求将要到达的位置.对于这个问题,我只关心"到"的位置.

Request --belongsTo--> Location* --hasAndBelongsToMany--> Item

(* as "ToLocation")
Run Code Online (Sandbox Code Playgroud)

在我的RequestController中,我想分页请求的ToLocation中的所有项目.

// RequestsController
var $paginate = array(
    'Item' => array(
        'limit' => 5,
        'contain' => array(
            "Location"
        )
    )
);

// RequestController::add()
$locationId = 21;
$items = $this->paginate('Item', array(
    "Location.id" => $locationId
));
Run Code Online (Sandbox Code Playgroud)

这是失败的,因为它正在生成这个SQL:

SELECT COUNT(*) AS count FROM items Item   WHERE Location.id = 21
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚如何让它实际使用...的"包含"参数$paginate...

有任何想法吗?

Azi*_*ziz 11

经过3天的搜索,我找到了方法

var $paginate = array('Post'=>array('group'=>'Post.id'));
Run Code Online (Sandbox Code Playgroud)

建议添加组,因为有时我们会在不同的类别中获得重复的帖子

$this->Post->bindModel(array('hasOne'=>array('CategoriesPost')), false);
$out = $this->paginate('Post', array('CategoriesPost.category_id'=>array(1,4,7,6)));
Run Code Online (Sandbox Code Playgroud)

添加false以将绑定模型用于所有查询,而不仅仅是以下内容