2015-06-11 10 views
7

bạn có thể thấy các tên lỗi không? điều kiện AND của tôi bị bỏ qua! Tôi nhận được quá thất vọng với những mảng ..CakePHP tìm 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

Bạn có thể vui lòng cung cấp chi tiết về hành vi sai trái mà bạn gặp phải không? –

Trả lời

10

Các điều kiện của bạn cần phải là ['Transaction.id' => $client_id, 'Transaction.name !=' => 'Facturation']. Nhiều điều kiện của mảng conditions được hiểu là điều kiện 'VÀ'.

Vì vậy, câu hỏi của bạn sẽ trông như thế: -

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

Bạn chỉ cần chỉ mục bằng and nếu bạn có phím mảng tình trạng trùng lặp; đây không phải là trường hợp trong ví dụ của bạn khi bạn có Transaction.idTransaction.name !=. Bất kể, chỉ mục and sẽ cần phải là chỉ mục bên trong mảng conditions, không phải là anh chị em.

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

Trong trường hợp nếu bạn muốn rằng tên không nên có bất kỳ một trong số họ sau đó bạn nên viết truy vấn như sau:

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