2009-07-28 23 views
43

Necesito seleccionar todas las filas donde User.site_url no es nulo. Es lo suficientemente simple para hacer esto en una consulta regular de MySQL, pero ¿cómo se hace esto en CakePHP?CakePHP: Buscar donde el campo no es nulo

El manual menciona lo siguiente:

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

He intentado el siguiente pero sigue volviendo todo

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

Respuesta

92

Creo que esto es lo que quiere decir:

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

No creo que me haya perdido algo de esa manera, gracias al tanto de las respuestas! – DanCake

+0

Se traduce como "AND NOT (User.site_url = NULL)". Por lo tanto, prefiero @GwynBleidd responder ['User.site_url IS NOT NULL']. –

16

Su solo falta el nulo

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

En Cake, una condición WHERE se construye a partir del elemento 'condiciones' uniendo claves y valores. Eso significa que puede omitir proporcionar las claves si lo desea. Por ejemplo:

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

es completamente equivalente a

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

En esencia, se puede solucionar el problema con sólo esto:

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

Este trabajo fino para mí:

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

También puedes probar esto,

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

Esto funciona muy bien para mí ..

1

Por favor, intente '' en lugar de null:

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

¿Podría describir lo que está tratando de hacer y el problema exacto que enfrenta? desde este trazador de líneas, parece que le está diciendo que use "nulo" que podría estar usando en su consulta. – Ravish

0

Para consulta sencilla:

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

Pero si quieres hacerlo en unirse a las consultas, entonces necesita unirse a la derecha:

$this->User->find('all', array(
    'conditions' => array(
     'User.site_url IS NOT NULL' 
    ), 
    'joins' => array(
      array(
        'table' => $this->getTableName('default', 'table_name'), 
        'alias' => 'ModelName', 
        'type' => 'RIGHT', 
        'conditions' => array(
         'ModelName.id = User.join_field_id', 
         'ModelName.field IS NOT NULL', //<= this condition can be used on main (top) condition 
        ), 
       ), 

)); 
0

Su trabajo para mí

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