我的项目严重陷入僵局。我正在寻找解决方案,但几乎没有。
我的索引页面有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()函数中做些什么?
答案 0 :(得分: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());
}