在分页时限制包含的关联记录数量的正确方法是什么?
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];
中,$options
为1
且$pointer[$table]
为数组。
令人困惑的是,设置$paginate['contain']['AssociatedModel']['fields']
按预期工作,但设置'limit'
或'order'
会导致同样的错误。
答案 0 :(得分:1)
尽管设置$paginate['contain']['AssociatedModel']['fields'] = [...]
有效,但还需要使用函数设置其他选项。以下代码修复了我的问题:
$paginate['contain']['AssociatedModel'] = function($q) {
return $q
->select([...])
->limit(1)
->order([...]);
};