LoginSignup
4
2

More than 5 years have passed since last update.

【CakePHP2】find検索 の conditions で否定演算子を使う場合

Posted at

CakePHP2 で find の検索条件(conditions)を使用する場合、以下のように書くと思います。

$query = $users->find('all', [
    'conditions' => [
        'country' => 'Japan',
    ],
]);

この条件を否定で書くには、

$query = $users->find('all', [
    'conditions' => [
        'NOT' => [
            'country' => 'Japan',
        ],
    ],
]);

とすると思いますが、以下のようにも書けます。

$query = $users->find('all', [
    'conditions' => [
        'country !=' => 'Japan',
    ],
]);

否定演算子の != を使いますが、これは <> でも動きます。

DB的にはどちらを使ってもいいと思うのですが、Cookbookには != で書かれています。

また、CakePHP2 の Model.php にも != が使われている箇所があります。

Model.phpの_findNeighbors()
$query['conditions'][$field . ' !='] = $value;
Model.phpのisUnique()
$fields[$this->alias . '.' . $this->primaryKey . ' !='] = $this->id;

プロジェクトのコーディング規約で決まっていない場合、 != を使うのがよいと思います。

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2