0

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

文档似乎没有解决如何在分页时设置“包含”选项,但$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'导致相同的错误。

4

1 回答 1

1

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

$paginate['contain']['AssociatedModel'] = function($q) {
    return $q
        ->select([...])
        ->limit(1)
        ->order([...]);
};
于 2015-11-10T00:05:25.720 回答