我有3个模型(地址(订单)/ 用户 / 城市)
我通过adresses_users连接它们(我知道地址应该是两个d:/ )和cities_users。
现在我在地址控制器中有一个动作,它应该为我提供所有可用城市的列表,我想要计算该城市中有多少用户(通过cities_users连接。
//Get all cities
$cities = $this->Cities->find('list', [
'keyField' => 'id',
'valueField' => function ($cities) {
return $cities->get('full_info');
}
,'order' => ['name' => 'asc']])
->contain(['Users']);
我到目前为止,但我不知道在哪里可以为所有包含用户使用count函数。任何想法或文档链接(https://book.cakephp.org/3.0/en/orm/retrieving-data-and-resultsets.html#finding-key-value-pairs)
答案 0 :(得分:1)
您可以像这样构建查询,
$query = $this->Cities->find();
$query->select(['users_count' => $query->func()->count('Users.id'),
'city_name' => 'Cities.name']);
$query->leftJoinWith('CitiesUsers');
$query->group('Cities.id');
//debug($query->sql()); debug($query); //to check whether correct sql constructed
//debug($query->toArray());
此代码未经过测试,我将其编写为提供示例。