我需要從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