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'))));
Je pense que c'est ce que vous voulez dire:
$this->User->find('all', array(
'conditions' => array('not' => array('User.site_url' => null))
));
Votre manque juste le nul
$this->User->find('all', array('conditions' => array('not' => array('User.site_url'=>null))));
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')));
Vous pouvez aussi essayer ça,
$this->User->find('all', array('conditions' => array('User.site_url <>' => null));
Cela fonctionne bien pour moi ..
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();
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();
Cela fonctionne bien pour moi:
$this->User->find('all', array('conditions' => array('User.site_url !=' => null));
Veuillez essayer ''
plutôt que null
:
$this->User->find('all', array('conditions' => array('User.site_url <>' => ''));
Ç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)))));