计算 CakePHP 列表中连接的用户数

Count Users connected in CakePHP Listing

我有 3 个模型(地址(订单)/用户/城市

我通过 adresses_users(我知道地址应该有两个 d:/)和 cities_users.

现在我在 Adresses Controller 中有一个动作,它应该给我一个所有可用城市的列表,我想计算那个城市有多少用户(通过 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']);

到目前为止,我还不知道在哪里可以对所有包含的用户使用计数功能。任何人的想法或文档 link (https://book.cakephp.org/3.0/en/orm/retrieving-data-and-resultsets.html#finding-key-value-pairs)

您可以像这样构建查询,

$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());

此代码未经测试,我写它是为了提供示例。