web-dev-qa-db-ja.com

CakePHP:フィールドがnullではない場所を見つける

User.site_urlがnullではないすべての行を選択する必要があります。通常のMySQLクエリでこれを行うのは簡単ですが、CakePHPではどのように行われますか?

マニュアルには次のことが記載されています。

array ("not" => array (
        "Post.title" => null
    )
)

私は次のことを試しましたが、まだすべてを返しています

$this->User->find('all', array('conditions' => array('not' => array('User.site_url'))));
46
DanCake

私はこれがあなたの言うことだと思う:

$this->User->find('all', array( 
    'conditions' => array('not' => array('User.site_url' => null))
));
95
g33kz0r

あなただけのnullが欠けています

$this->User->find('all', array('conditions' => array('not' => array('User.site_url'=>null))));
16
PetersenDidIt

Cakeでは、キーと値を結合することにより、 'conditions'要素からWHERE条件が構築されます。これは、必要に応じて実際にキーの提供をスキップできることを意味します。例えば。:

array('conditions' => array('User.id'=>1))

と完全に同等です

array('conditions' => array('User.id = 1'))

基本的に、これだけで問題を解決できます。

$this->User->find('all', array('conditions' => array('User.site_url IS NOT NULL')));
12
GwynBleidd

これを試すこともできます

$this->User->find('all', array('conditions' => array('User.site_url <>' => null));

これは私には問題ありません。

3
Souvick Dey

単純なクエリの場合:

$this->User->find('all', array(
     'conditions' => array(
         'User.site_url IS NOT NULL'
));

Cakephp 3.Xの場合

 $table = TableRegistry::get('Users');
 $assessmentComments = $table
      ->find()
      ->where(function (QueryExpression $exp, Query $q) {
            return $exp->isNotNull('site_url');
        })
      ->all();
2
Fury

このスコープは正しい!(ctlockey)

$this->User->find('all', array('conditions' => array('not' => array('User.site_url' =>null))));

ただし、MySqlとMariaDbの異なるバージョンで使用すると、一貫性のない結果が返されました。ダイレクトSQLの少しはそれほど悪くないので、リターンの整合性を確保することを信じています。

したがって、私は次のことを行いました。

$Obj->find()->where(['field_a IS NULL', 'field_b IS NOT NULL'])->all();
1

私にとってこれはうまくいきます:

$this->User->find('all', array('conditions' => array('User.site_url !=' => null));
1
Chanraksmey

してみてください ''ではなくnull

$this->User->find('all', array('conditions' => array('User.site_url <>' => ''));
1
aminulsujon

それは私のために働いています

$this->set('inventory_masters',$this->InventoryMaster->find('all',array('order'=>$orderfinal,'conditions' => array('InventoryMaster.id' => $checkboxid,'not' => array('InventoryMaster.error'=>null)))));
0
princespn