CakePHP 3:设置'包含'分页时

时间:2015-11-09 22:35:19

标签: cakephp cakephp-3.1 cakephp-3.x

在分页时限制包含的关联记录数量的正确方法是什么?

The docs don't appear to address如何设置'包含'的选项虽然分页,但$paginate['contain']['AssociatedModel']['limit'] = 1;似乎有意义。但是,该行在CakePHP 3.1.3中导致了以下错误:

Fatal error: Unsupported operand types in ...\vendor\cakephp\cakephp\src\ORM\EagerLoader.php on line 312

正在生成错误,因为在行$pointer[$table] = $options + $pointer[$table];中,$options1$pointer[$table]为数组。

令人困惑的是,设置$paginate['contain']['AssociatedModel']['fields']按预期工作,但设置'limit''order'会导致同样的错误。

1 个答案:

答案 0 :(得分:1)

尽管设置$paginate['contain']['AssociatedModel']['fields'] = [...]有效,但还需要使用函数设置其他选项。以下代码修复了我的问题:

$paginate['contain']['AssociatedModel'] = function($q) {
    return $q
        ->select([...])
        ->limit(1)
        ->order([...]);
};