计算包含的实体
Getting count of contained entities
我有一个 Lists
实体,其中包含 Item
个实体。我想在获取 Lists
.
时获取 Items
的计数
这是我试过的查询:
$lists = $this->Lists->find()
->contain(["Items" => function($q){
return $q->select(["count" => $q->func()->count("*")]);
}])
->all();
这是行不通的。有什么帮助吗?谢谢。
我建议只使用 PHP 来获取计数,而不是依赖一堆不必要的计数查询(这会很快占用资源)。
可能有更优雅的方法,但我会做 find()
,然后用 PHP:
附加计数
$lists = $this->Lists->find()
->contain(["Items"])
->all();
foreach($lists as &$list) {
$list['Items']['count'] = count($list['Items']);
}
(上面的代码不在我的脑海中 - 将其更多地作为伪代码来展示这个想法,因为可能存在一些小的语法问题......等等)
没关系,答案可以在docs.
中找到
示例代码片段:
$lists = $this->Lists->find();
$lists
->select(["Lists.id", "itemCount" => $lists->func()->count("Items.id")])
->matching("Items")
->group(["Lists.id"])
->all();
我有一个 Lists
实体,其中包含 Item
个实体。我想在获取 Lists
.
Items
的计数
这是我试过的查询:
$lists = $this->Lists->find()
->contain(["Items" => function($q){
return $q->select(["count" => $q->func()->count("*")]);
}])
->all();
这是行不通的。有什么帮助吗?谢谢。
我建议只使用 PHP 来获取计数,而不是依赖一堆不必要的计数查询(这会很快占用资源)。
可能有更优雅的方法,但我会做 find()
,然后用 PHP:
$lists = $this->Lists->find()
->contain(["Items"])
->all();
foreach($lists as &$list) {
$list['Items']['count'] = count($list['Items']);
}
(上面的代码不在我的脑海中 - 将其更多地作为伪代码来展示这个想法,因为可能存在一些小的语法问题......等等)
没关系,答案可以在docs.
中找到示例代码片段:
$lists = $this->Lists->find();
$lists
->select(["Lists.id", "itemCount" => $lists->func()->count("Items.id")])
->matching("Items")
->group(["Lists.id"])
->all();