2

所以我有这个查询,我正在尝试转换为 cake ORM,但我不知道该怎么做。

我有一个用户表和一个单词表。用户有很多词(这就是关系)。我想写一个查询,它会给我在系统中添加最多单词的用户。这是我写的当前查询,但我无法将其转换为 cakephp ORM 语法,有什么想法吗?

SELECT 
    users.username, 
    COUNT(word) AS n 
FROM 
    users AS users 
        INNER JOIN words AS words 
            ON users.userid=words.userid 
GROUP BY 
    users.username 
ORDER BY 
    n DESC 
LIMIT 3
4

1 回答 1

3

有很多方法可以编写查询:- 在控制器中,您可以写为 -

 $options = array(
             'fields' => array(
                  'User.name',
                  'COUNT(Word.id) as word_count',
                 ),
          'group'  => 'Word.user_id',
          'order'  => 'word_count DESC',
        );           

$users = $this->User->Word->find('first', $options);
debug($users);

在用户模型中,您必须编写:

public $hasMany = 'Word';

在 Word 模型中,您必须编写:

public $belongsTo = 'User';
于 2012-07-16T08:46:23.577 回答