我需要从mysql中找到那些具有唯一test
字段的行。我尝试添加virtualFields得到的test
然后我通过test
场分组计数,并检查该测试必须等于1虚拟字段和在CakePHP中使用HAVING
以下是我的代码......它给了错误: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格式中转换上述查询。
注意“virtualFields”不是* *的方法,它的型号的* *财产;要添加一个虚拟字段,使用:$ this-> user-> virtualFields = array('countTest'=>'COUNT(User.test)');'。阅读这里的文档:[虚拟领域](http://book.cakephp.org/2.0/en/models/virtual-fields.html)。但是,将它用作HAVING条件在CakePHP中有点棘手,它必须附加到'GROUP BY'子句中。请参阅@icebreaker提供的答案中的“组”键。 – thaJeztah