计算 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());
此代码未经测试,我写它是为了提供示例。
我有 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());
此代码未经测试,我写它是为了提供示例。