2013-05-04 52 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