Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
虚拟字段和在CakePHP中的使用_Php_Mysql_Cakephp - Fatal编程技术网

虚拟字段和在CakePHP中的使用

虚拟字段和在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 = $

我需要从mysql中找到那些具有唯一
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提供的答案中的“组”键。