2011-12-01 38 views
10

Tôi đã tìm thấy truy vấn giống như thế này.Sử dụng toán tử không bằng nhau trong Cakephp

$this->paginate('Article', array('Article.status !=' => 'Inactive', 'Article.user_id !=' => $blocked_ids, 'Article.tags LIKE' => "%" . trim($this->params['url']['tag']) . "%")) 

trong đó $ blocked_ids là một mảng các id. Nó ném một lỗi

SQL Error: 1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '= ('170') 

Khi tôi xóa != nó hoạt động tốt. Không có lỗi

Tôi đánh giá cao bất kỳ trợ giúp nào.

Trả lời

0

Hãy thử sử dụng NOT IN thay [MySQL Reference]:

$this->paginate('Article', array('Article.status !=' => 'Inactive', 'Article.user_id NOT IN' => $blocked_ids, 'Article.tags LIKE' => "%" . trim($this->params['url']['tag']) . "%")) 
+0

NOT IN dường như không làm việc. Lỗi tương tự. –

2

này nên được xử lý khi bạn đang nhận được dữ liệu của bạn trong chức năng mô hình của bạn. Bạn nên loại trừ chúng bằng cách sử dụng mã như thế này:

'conditions' => array(
    'Article.status' => 'active', 
10
$this->paginate(
       'Article', 
       array (
        'Article.status <>' => 'Inactive', 
        'Article.user_id !=' => $blocked_ids, 
        'Article.tags LIKE' => "%" . trim($this->params['url']['tag']) . "%" 
        ) 
      ); 
Các vấn đề liên quan