web-dev-qa-db-fra.com

CakePHP: Trouver où le champ n'est pas nul

Je dois sélectionner toutes les lignes où User.site_url n'est pas null. C'est assez simple de faire cela dans une requête MySQL classique, mais comment est-ce fait dans CakePHP?

Le manuel mentionne ce qui suit:

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

J'ai essayé ce qui suit mais ça retourne toujours tout

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

Je pense que c'est ce que vous voulez dire:

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

Votre manque juste le nul

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

Dans Cake, une condition WHERE est construite à partir de l'élément 'conditions' en joignant des clés et des valeurs. Cela signifie que vous pouvez réellement éviter de fournir les clés si vous le souhaitez. Par exemple.:

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

est complètement équivalent à 

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

Essentiellement, vous pouvez résoudre votre problème simplement en ces termes:

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

Vous pouvez aussi essayer ça,

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

Cela fonctionne bien pour moi ..

3
Souvick Dey

Pour une requête simple:

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

Pour cakephp 3.X

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

cette portée est correcte! (ctlockey)

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

Cependant, j’ai utilisé des versions différentes de MySql et de MariaDb pour obtenir des résultats inconstants ..__ Je crois qu’un peu de SQL direct n’est pas si mauvais que de garantir l’intégrité du retour.

Par conséquent, j'ai fait ce qui suit:

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

Cela fonctionne bien pour moi:

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

Veuillez essayer '' plutôt que null:

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

Ça marche pour moi

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