2015-06-11 7 views
7

puoi vedere l'errore ragazzi? le mie condizioni AND sono ignorate! Sto diventando così frustrato con quegli array ..CakePHP trova WHERE NOT EQUAL

$transaction_query = $this->Transaction->find('all', 
       [ 
        'limit' => $countList, 
        'fields' => ['Transaction.client_id','Transaction.name','Transaction.created','Transaction.message_id','Transaction.credit'], 
        'conditions' => ['Transaction.id' => $client_id], 
        'AND' => ['Transaction.name !=' => 'Facturation'] 
       ]); 
+1

Potete fornire dettagli sul comportamento scorretto che incontrate? –

risposta

10

Le tue condizioni devono essere ['Transaction.id' => $client_id, 'Transaction.name !=' => 'Facturation']. Le condizioni multiple dell'array conditions sono interpretate come condizioni 'AND'.

Quindi la query sarà simile: -

$transaction_query = $this->Transaction->find('all', 
    [ 
     'limit' => $countList, 
     'fields' => [ 
      'Transaction.client_id', 
      'Transaction.name', 
      'Transaction.created', 
      'Transaction.message_id', 
      'Transaction.credit' 
     ], 
     'conditions' => [ 
      'Transaction.id' => $client_id, 
      'Transaction.name !=' => 'Facturation' 
     ] 
    ] 
); 

Hai solo bisogno di indice and se avete duplicati chiavi condizione di matrice; questo non è il caso nel tuo esempio come lo hai Transaction.id e Transaction.name !=. Indipendentemente da ciò, l'indice and dovrebbe essere un indice all'interno dell'array conditions, non un fratello.

3
$this->Transaction->find('all', array(
'limit' => $countList, 
'fields' => ['Transaction.client_id','Transaction.name','Transaction.created','Transaction.message_id','Transaction.credit'], 
'conditions' => array("not" => array ('Transaction.id' => $client_id)), 
'AND' => array('not' => ('Transaction.name ' => 'Facturation'))); 

Nel caso in cui se si vuole che il nome non dovrebbe essere uno qualsiasi di loro, allora si dovrebbe scrivere query come segue:

$this->Transaction->find('all', array('conditions' => array('NOT' => array('Transaction.name' => array('a','aa','aaa')))));