2013-05-04 79 views
0

請幫我通過Cakephp中的多個條件檢索表中的數據
我有一個表名:article;我試圖用下面的代碼檢索數據
我想獲得特定的ID,如參數中給出的; article_price> 0和article_status> 1
CakePHP:如何通過多個條件檢索數據

public function getArticle($artID = ''){ 
    return $this->find('all', array(
     'condition' => array(
          'article_id =' => $artID, 
          'article_price' => '> 0', 
          'article_status = ' => '1'), 
     'order' => 'article_id DESC' 
    )); 
} 

//該出選擇,我想沒有條件的所有數據放。

我的代碼有什麼問題?
我發現的是我打印:echo $ this-> element('sql_dump');,我得到了下面的SQL語句:

SELECT `article`.`article_id`, `article`.`name`, `article`.`article_price`, `article`.`article_status` FROM `db_1stcakephp`.`article` AS `article` WHERE 1 = 1 ORDER BY `article_id` DESC 

請幫助我。 謝謝!

回答

3

如果您的型號名稱是第二條:

public function getArticle($art_id) { 
    return $this->find('first', array(
     'conditions' => array(
      'Article.article_id' => $art_id, 
      'Article.article_price >' => 0, 
      'Article.article_status >' => 1, 
     ), 
    )); 
} 

使用「Model.field」語法是可選的,直到你的車型有關係,並擁有相同的名字 - 例如Article.status和Author.status。

移動比較標誌到陣列的重要組成部分允許你這樣做:

'Article.price >' => $minPrice, 
'Article.price <=' => $maxPrice, 

而且我真的沒有注意到「條件」錯字。

+0

你的答案包含正確的解決方案,但你應該真的添加一些解釋* OP *做錯了什麼;例如'condition'應該是'conditions','>'應該在* key *而不是條件的*值*中。添加一些額外的信息,我會upvote – thaJeztah 2013-05-04 21:31:04

+0

謝謝,它的幫助完整:) – 2013-05-05 02:21:46

+0

爲了結合多個條件與* OR *邏輯,將它們包裝在一個'或'鍵中。請參閱http://book.cakephp.org/2.0/en/models/retrieving-your-data.html#complex-find-conditions – pixelistik 2013-05-05 10:21:34