【问题标题】:CakePHP 3 how to limit number on items in contain per item not globallyCakePHP 3如何限制每个项目包含的项目数量不是全局的
【发布时间】:2015-10-19 21:05:35
【问题描述】:

我有与类别相关的文章。我想为每个类别最多获得两篇文章。存在多对一连接。所以我使用以下。

$query = $categories->find()->contain([
    'Articles' => [
        'queryBuilder' => function ($q) {
            return $q->limit(2); 
        }
    ]
]);

不幸的是,限制 2 个接缝是全局的。我从第一个类别中获得 2 篇文章,然后没有与其他类别相关的文章。

如何设置每个项目而不是全局的限制。

【问题讨论】:

    标签: php mysql cakephp


    【解决方案1】:

    试试custom finder

    $query = $articles->find()->contain([
        'Authors' => [
                'finder' => 'limitedAuthors'
            }
        ]
    ]);
    

    我自己还没有使用过这个,所以不确定它是否进入了“文章”或“作者”表。猜猜它在 AuthorsTable 中。

    public function findLimtedAuthors(Query $query, $options) {
        return $query->limit(2);
    }
    

    【讨论】:

    • 它在 3.1 中不起作用。我编辑了一点我的问题 - 现在它可以更清楚了
    • 不幸的是,限制仍然(如我的示例中)是全局的。
    猜你喜欢
    • 2016-03-28
    • 2015-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-20
    • 2013-08-09
    • 1970-01-01
    相关资源
    最近更新 更多