1

我需要从 mysql 中找到那些具有唯一test字段的行。我尝试添加 virtualFields 以获取testtest字段分组的计数,并检查测试必须等于 1。

以下是我的代码......它给出了错误:Syntax error or access violation

public function index()
{
    $this -> User -> virtualFields(array(
        'countTest' => "COUNT(User.test)"
    ));

    $users = $this -> User -> find('all', array(
        'conditions' => array('countTest' => 1),
        'group' => 'User.test'
    )); 

    pr($users); die;
}

我找到了解决问题的 MySql 查询:'SELECT test, COUNT(*) as count FROM users GROUP BY test HAVING COUNT(*) = 1';

你能把上面的查询转换成 CakePHP 格式吗?

4

1 回答 1

4

这样的事情可能会引导您找到正确的解决方案

$this->User->find('all', array(
    'fields' => array('User.test', 'COUNT(User.test) AS User__test_count'),
    'group' => array('User.test'),
    // or even cake style SQL injection :)
    // 'group' => array('User.test HAVING COUNT(*) = 1')
  ));
于 2013-04-02T07:13:12.447 回答