【问题标题】:CakePHP 3: Setting options for 'contain' when paginatingCakePHP 3:分页时设置“包含”选项
【发布时间】:2015-11-09 22:35:19
【问题描述】:

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

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' 会导致同样的错误。

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2013-12-20
      • 2015-06-25
      • 2016-01-05
      • 1970-01-01
      • 2016-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多