2012-07-25 165 views
0

我的问题很简单。我有一个名为'articles'的表,我希望得到前三个最近的文章订单DESC。但我也希望这些文章如果发布日期早于或等于今天就会显示。所以我的要求中有其他条件。我的CakePHP的代码如下:SQL请求无法正常工作

$this->set('lastArticles', $this->Article->find('all', array(
      'conditions' => array('Article.visible' => true), 
      'Article.publication_date <= ' => date('Y-m-d'), 
      'order' => array('Article.creation_date DESC', 'Article.id DESC'), 
      'limit' => 3 
     ))); 

但即使有出版日期>日期(“Y-M-d”)的文章,这些的人都显示得问题!有人有想法吗?预先感谢您的回答。

回答

1

看起来像您的publication_date条件不在条件数组中。你的代码应该是这样的:

$this->set('lastArticles', $this->Article->find('all', 
    array(
     'conditions' => array(
      'Article.visible' => true, 
      'Article.publication_date <= ' => date('Y-m-d') 
     ), 
     'order' => array(
      'Article.creation_date DESC', 
      'Article.id DESC' 
     ), 
     'limit' => 3 
    ))); 

有点额外的缩进和空白是你的朋友在这里。

+0

感谢您的回答。我试过你的解决方案,它不起作用。尽管如此,该文章的发布日期是2012-07-31,因此不应该显示! – user1450730 2012-07-25 15:22:51

0
See this 

$conditions = array(
       'Article.visible' => true, 
       'Article.publication_date <= ' => date('Y-m-d') 
      ); 

$order = array('Article.creation_date DESC', 'Article.id DESC'); 

$lastArticles = $this->Article->find('all', array(
      'conditions' => $conditions, 
      'order' => $order, 
      'limit' => 3 
     ); 

$this->set('lastArticles', $lastArticles);