计算CakePHP中连接的用户列出

时间:2017-01-20 17:58:52

标签: cakephp get find cakephp-3.x

我有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

1 个答案:

答案 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());

此代码未经过测试,我将其编写为提供示例。