2011-11-04 95 views
0

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

这是文件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中获得一个错误,在这种情况下,这是设置包含帖子数组的变量的正确名称(数据库与博客相同教程),第二个问题是如何显示从index.ctp中查询获得的数据?在例子中,我以这种方式

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

,并获得重复的元素我必须写

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

但在我的情况?

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

回答

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变量模板访问。

+0

问题1:忽略'$ name'(参见[这个问题](http://stackoverflow.com/questions/8045324/does-cakephp-2-0-still-need-name-declared-in-该模型)) :) – deizel