0

嗨,我目前正在做一个项目,想知道是否可以在 cakephp 中执行两个查找功能?例如,我正在制作一个体育新闻网站,并将新闻文章分组为头条新闻、新闻和标题。

我想要做的是检索头条新闻,这样我就可以将这些作为突出的故事突出显示,然后将下层作为一个较小的故事放在下面,然后头条新闻将是最不重要的。

这是我到目前为止所拥有的

   function latestnews() {

$articles =  $this->Article->find('all', 
    array('limit' =>3,
    'order' => 
        array('Article.date_created' => 'desc')));
    if(isset($this->params['requested'])) { 
         return $articles; 
         } 
            $this->set('articles', $articles); 

    $articler = $this->Article->find('all', 
        array('Article.type' => 'topstory',
            'Limit' => '1'
    )); 

        $this->set('articles', $articler);

}

但是这似乎不起作用,它不限制 $articles 功能,而是回显表中的所有数据。

在视图中,我正在执行标准的 foreach 语句来回显数据,但我得到了一个未定义的变量错误。

我所说的是否可能,或者我应该创建不同的功能然后将它们用作元素?

感谢您提前输入!

4

3 回答 3

0

您可以将关联与自身动态绑定。试试这个代码:

function latestnews() {
    $this->Article->bindModel(array('hasMany' => array('TopStory' => array('className' => 'Article',
                                           'foreignKey' => false,
                                           'conditions' => array('Article.type' => 'topstory')
                                           ),
                               'Highlight' .....
                               )));
    $articles =  $this->Article->find('all',
                      array('limit' =>3,
                        'order' =>  array('Article.date_created' => 'desc')));
    if(isset($this->params['requested'])) {
        return $articles;
    }
    $this->set('articles', $articles);

    $articler = $this->Article->find('all',
                     array('Article.type' => 'topstory',
                           'Limit' => '1'
                           ));
    $this->set('articles', $articler);

}

希望它对你有用。

于 2012-07-10T05:13:48.227 回答
0

@Arun 不,这似乎不起作用,我得到了这个错误,Error: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'Article.type' in 'where clause'我也试图把它放在一个有自己功能的元素中,然后我得到了这个错误......

注意 (8):未定义变量:数据 [APP/View/Elements/Articles/topstories.ctp,第 5 行] 警告 (2):为 foreach() [APP/View/Elements/Articles/topstories.ctp,第 5 行] 注意 (8):未定义属性:View::$Paginator [CORE/Cake/View/View.php,第 806 行] 致命错误:在 /Applications/ 中的非对象上调用成员函数 prev() XAMPP/xamppfiles/htdocs/kickoff/app/View/Elements/Articles/topstories.ctp 在第 21 行

控制器代码如下...

function topstories() {
    $this->paginate = array(
        'conditions' => array('Article.type' => 'topstory'),
    'limit' => 2,
    'order' => array(
        'date_created' => 'asc'
    )
    );
    $data = $this->paginate('Article');
    $this->set(compact('data'));

}

我发现这个错误令人困惑,就好像我没有把它放在一个元素中,而是在一个视图中它完美地工作!但是在一个不太完美的元素中:S 关于为什么会这样的任何想法?

于 2012-07-10T10:54:34.617 回答
0

我没有在一个函数中使用两种查找方法,而是选择简单地创建不同的函数并将它们用作元素,例如......

function premiershiptopstory() {

            $pltopnews = $this->Article->find('all', array(
                    'conditions' => array('Article.league' => 'premiership',
                    'Article.type' => 'topstory')));
                        if(!empty($this->request->params['requested'])) {
                        return $pltopnews;}
                        $this->set('article', $pltopnews);  


            }

但是在视图中,您必须请求该操作,否则您将得到一个错误,请求该操作只需使用这行代码...

 <?php $pltopnews = $this->requestAction('/Articles/premiershiptopstory');

希望这对其他人有帮助!

于 2012-08-08T14:05:49.250 回答