2015-06-11 13 views
7

können Sie den Fehler Jungs sehen? Meine AND Bedingungen werden ignoriert! Ich bin immer so frustriert mit dem Arrays ..CakePHP finden, wo nicht gleich

$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

Können Sie bitte Einzelheiten zu dem Fehlverhalten angeben, dem Sie begegnen? –

Antwort

10

Ihre Bedingungen müssen ['Transaction.id' => $client_id, 'Transaction.name !=' => 'Facturation'] sein. Mehrere Bedingungen des Arrays conditions werden als UND-Bedingungen interpretiert.

So Ihre Abfrage würde wie folgt aussehen: -

$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' 
     ] 
    ] 
); 

Sie nur von and indizieren benötigen, wenn Sie doppelte Bedingung Array-Schlüssel haben; Dies ist nicht der Fall in Ihrem Beispiel, wie Sie Transaction.id und Transaction.name != haben. Unabhängig davon, der and Index müsste ein Index innerhalb der conditions Array, kein Geschwister sein.

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'))); 

Im Fall, wenn Sie möchten, dass Namen nicht einer von ihnen sein sollen, dann sollten Sie Abfrage schreiben, wie folgt:

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