1

test一意のフィールドを持つ mysql の行を見つける必要があります。カウントを取得するために 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 形式に変換できますか。

4

1 に答える 1

4

このような何かがあなたを正しい解決策に導くかもしれません

$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')
  ));
于 2013-04-02T07:13:12.447 に答える