我有一个桌面用户和另一个桌面游戏。
现在用户将创建游戏。现在我想要用户列表和他创建的游戏数量。
下面的查询将完全输出(IN PHPMYADMIN)我想要的内容。 但我不知道如何在cakephp 3.0中解雇这样的查询:
SELECT `users`.`id`,`firstname`,`lastname`,(select count(id) from games where games.created_by=users.id) FROm users group by `users`.`id`
答案 0 :(得分:5)
在您的控制器中:
$users = $this->Users->find('all', [
'fields' => [
'id' => 'Users.id',
'firstname' => 'firstname',
'lastname' => 'lastname',
'count_games' => 'COUNT(games.id)'
],
'join' => [
'table' => 'games',
'type' => 'LEFT',
'conditions' => 'games.created_by = Users.id'
],
'group' => ['Users.id'],
]);
$this->set('users', $users);
$this->set('_serialize', ['users']);
答案 1 :(得分:0)
我使用下面的代码进行排序
<th><?= $this->Paginator->sort('count_games_created','Number of games created') ?></th>
<th><?= $this->Paginator->sort('count_games_joined','Number of games attended') ?></th>
答案 2 :(得分:0)
经过大量研究后,我找到了一个非常好的解决方案:CounterCache!
每当您向game
添加新的user
时,用户表中的游戏数量game_count
都会更新。
它有效,而且是更快解决方案。