我有一个Lists
实体,其中包含Item
个实体。我在抓取Items
时想要获得Lists
的统计数。
这是我试过的查询:
$lists = $this->Lists->find()
->contain(["Items" => function($q){
return $q->select(["count" => $q->func()->count("*")]);
}])
->all();
哪个不起作用。有帮助吗?感谢。
答案 0 :(得分:1)
没关系,答案可以在docs中找到。
示例代码段:
$lists = $this->Lists->find();
$lists
->select(["Lists.id", "itemCount" => $lists->func()->count("Items.id")])
->matching("Items")
->group(["Lists.id"])
->all();
答案 1 :(得分:0)
我建议只使用PHP来获取计数,而不是依赖于一堆不必要的计数查询(可以快速占用资源)。
可能有更优雅的方式,但我会做find()
,然后用PHP附加计数:
$lists = $this->Lists->find()
->contain(["Items"])
->all();
foreach($lists as &$list) {
$list['Items']['count'] = count($list['Items']);
}
(上面的代码不在我的脑海中 - 把它当作伪代码来表示想法,因为可能会有轻微的语法问题......等等。)