我不明白如何指定一个查询来获取关联的计数。
在我的例子中,敏捷主题属于Agplan。
在DB中,4个敏捷主题属于Agplan id 22,1个敏捷主题属于Agplan id 23。
目前,我编写了以下查询,该查询在第一个Agplan数组的Ag题材数组中返回一个5的计数,为第二个查询返回一个空的Agthemes数组。
$agplans = $this->Agplans->find()
->contain([
'Agthemes' => function ($q) {
return $q->select(
[
'id',
'agplan_id',
'count' => $q->func()->count('*')
]);
}
])
->where([
'site_id' => $site->id
])
->all();如何正确编写此查询?
发布于 2016-04-29 09:42:00
您还必须将敏捷主题分组。
->contain([
'Agthemes' => function ($q) {
return $q->select(
[
'id',
'agplan_id',
'count' => $q->func()->count('*')
])
->group(['agplan_id']);
}
])发布于 2018-10-30 16:16:03
hasMany实例的另一种方式。注意leftJoin而不是包含。
$userTableQuery = $UsersTable->find();
$data = $userTableQuery
->select([
'Users.id',
'order count' => $userTableQuery->func()->count('Orders.id')
])
->leftJoinWith('Orders')
->group('Users.id');https://stackoverflow.com/questions/36934034
复制相似问题