我需要从mysql中找到那些具有唯一test
字段的行。我尝试添加virtualFields以获取test
的计数,然后按test
字段进行分组,并检查该测试必须等于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格式转换上述查询。
答案 0 :(得分:2)
这样的事情可以引导你找到正确的解决方案
$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')
));