【问题标题】:How to use one controller for more than one sql query in Cakephp?如何在 Cakephp 中使用一个控制器进行多个 sql 查询?
【发布时间】:2010-07-07 09:33:08
【问题描述】:

我的项目陷入了严重的僵局。我正在寻找几天的解决方案,但什么都没有。

我的索引页面有 4 个不同的 mysql 查询。我首先尝试在 1 个控制器和 1 个视图中对此进行编码。这不是正确的方法。然后有人建议使用带有 requestAction() 函数的 4 个元素。一开始非常好。然后我在命令之间需要mysql。我找不到与 requestAction() 一起使用的方法。我对 Cakephp 小组的问题仍未得到解答。有人建议在控制器中使用动作。但我不知道如何创建该控制器。

请告诉我你对它的了解。提前致谢,

这是我当前的后控制器的索引函数:

function index() {
        $posts = $this->paginate();
        if (isset($this->params['requested'])) {
            return $posts;
        } else {
            $sql = array( 'conditions' => array( 'id BETWEEN ? AND ?' => array( 286, 291 ) ) );
            $this->Post->find('all', $sql);
            $this->set('posts', $posts);
        }
}

我该怎么办?我应该为其余 3 个动作添加一个新控制器吗?还是我应该在 index() 函数中做点什么?

【问题讨论】:

  • 您能否备份一下,告诉我们您在什么情况下需要哪种类型的 4 个不同的查询,以及这些查询将在哪里使用?
  • 我当然愿意。谢谢你。这是我的项目。 bake.yemeklog.com 我想放那 3 列。一个用于迟到的帖子。过去 10 天评分最高的一个。过去 30 天评分最高的一个。可以通过元素对最后的帖子进行编码并始终获得最高评价。但是当我在命令之间需要 mysql 时,一切都停在那里。清楚了吗?
  • 你的评论让我想起了这篇博文:teknoid.wordpress.com/2008/12/16/…
  • 嗨,deizel,非常感谢。看来我终于找到了我要找的东西。文章可能会改进一点

标签: cakephp cakephp-1.3


【解决方案1】:

每次我需要在单个控制器中进行多个查询时,我都会这样做:

// model Foo
function edit($id){
    $this->data = $this->Foo->read(null, $id);
    $second = $this->Foo->Foo2->find('list');
    $third = $this->Foo->Foo3->find('list');
    $this->set(compact('second', 'third')); 
}

我猜,您想在这 3 列上分页,所以上面的示例不适合。

我认为您的方法有误。 $posts 与您的 find 无关。应该有$posts = $this->Post->find('all', $sql);。但这不允许您对结果进行分页。看看手册中的Custom Query Pagination。也许这对你有用:

function index(){
    if(!isset($this->params['requested'])) {
        $this->paginate = array('Post' => array(
            'conditions' => array('id BETWEEN ? AND ?' => array(286, 291))
        ));
    }
    $this->set('posts', $this->paginate());
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-24
    • 2013-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多