使用控制器中的查询显示数据 - 蛋糕php框架

时间:2011-11-04 01:03:32

标签: cakephp cakephp-1.3 cakephp-2.0

Hy家伙,我开始学习蛋糕php框架(版本2.0),当我读完博客教程时,我试图做一些实验,特别是我的问题是“是否有可能在模型中创建一个查询然后执行它在控制器中,最后以这种方式在视图中显示查询结果吗?

这是文件post.php(模型):

<?php

class Post extends AppModel {
    public $name='Post';
}

?>

这是posts_controller(控制器):

<?php
class PostsController extends AppController {
    public $helpers = array ('Html','Form');
    public $name = 'Posts';
    public $name = 'Articles';

    function index() {
        //$this->set('posts', $this->Post->find('all'));
        $sql="select * from posts";
        $this->set('Articles',$this->Post->query($sql));
    }
}
?>

问题是,如果我第二次声明$ name我从cake获取错误,在这种情况下,设置包含posts数组的变量的正确名称(数据库与博客教程相同) )第二个问题是如何在index.ctp中显示从查询中获得的数据?在示例中,我以这种方式迭代

<?php foreach ($posts as $post): ?>

并获得我必须写的元素

<?php echo $post['Post']['title']?>

但在我的情况下?

是否可以声明函数tha在模型中返回查询结果,然后在控制器中调用它并在someview.ctp中显示数据?

1 个答案:

答案 0 :(得分:0)

问题1:$name应该是控制器本身的名称,不确定您要对2个名称做什么。坚持使用“帖子”。

问题2: 你可能只是把帖子称为文章而让人感到困惑。

你最好的办法是改变这个:

$this->set('Articles',$this->Post->query($sql));

$this->set('posts',$this->Post->query($sql));

然后模板中的引用将起作用。这里发生的是当调用$this->set方法时,您正在使用名为$ posts的变量中的模板访问数据。那你现在有什么:

$this->set('Articles',$this->Post->query($sql));

将使模板在名为$Articles的变量中可访问数据。