虚拟字段和在CakePHP中的使用
我需要从mysql中找到那些具有唯一虚拟字段和在CakePHP中的使用,php,mysql,cakephp,Php,Mysql,Cakephp,我需要从mysql中找到那些具有唯一test字段的行。我试图添加virtualFields以获得test的计数,然后我按test字段分组,并检查test必须等于1 下面是我的代码。。。它给出错误:语法错误或访问冲突 public function index() { $this -> User -> virtualFields(array( 'countTest' => "COUNT(User.test)" )); $users = $
test
字段的行。我试图添加virtualFields以获得test
的计数,然后我按test
字段分组,并检查test必须等于1
下面是我的代码。。。它给出错误:语法错误或访问冲突
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 have COUNT(*)=1'代码>
您能否将上述查询转换为CakePHP格式。类似的内容可以引导您找到正确的解决方案
$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')
));
像这样的事情可以引导你找到正确的解决方案
$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')
));
请注意,“virtualFields”不是一个方法,它是模型的一个属性;要添加虚拟字段,请使用以下命令:$this->User->virtualFields=array('countTest'=>'COUNT(User.test)')代码>。请阅读此处的文档:。然而,在CakePHP中,将其用作具有条件的有点棘手,必须将其附加到'groupby'子句中。请参阅@icebreaker提供的答案中的“group”键。请注意,“virtualFields”不是一个方法,而是模型的一个属性;要添加虚拟字段,请使用以下命令:$this->User->virtualFields=array('countTest'=>'COUNT(User.test)')代码>。请阅读此处的文档:。然而,在CakePHP中,将其用作具有条件的有点棘手,必须将其附加到'groupby'子句中。请参阅@icebreaker提供的答案中的“组”键。