从模型到Controller的查询

时间:2013-05-06 13:13:00

标签: php cakephp scope database-abstraction

我正在学习整个MVC类型的编程。我在模型中有一个MySQl查询,如下所示:

<?php
class BlogModel extends BaseModel { 

    public static function dbBlog() {
        $db         = new Database(true);
        $entries    = $db->matrix('cms_m1_blog_ml');
        $this->set('data_blog', $entries);
    }
}

当我在控制器中使用它时,此脚本有效。视图看起来像这样:

<?php

foreach($data_blog as $blog)
 { 
     echo "<ul>"; 
     echo "<li class='name'>Name:".$blog['title'] . "</li>"; 
     echo "<li class='content'>Content:".$blog['content'] . "</li>";
     echo "</ul>"; 
 }

如何将数据从模型传递到控制器?我试过各种各样的事情,但没有一个方向正确。我使用我的员工构建的自定义框架,但它基于CakePHP。

3 个答案:

答案 0 :(得分:0)

使用类似的东西

$this->set('data_blog', BlogModel::dbBlog());

答案 1 :(得分:0)

为控制器提供对模型的引用。如果模型是静态类,只需将静态变量添加到控制器类,否则将正确的模型对象作为参数传递给类构造函数,并将其存储在对象的属性中。像这样:

class BlogModel extends BaseModel { 
    private $db;
    private $entries;

    public static function dbBlog() {
        $db         = new Database(true);
        $entries    = $db->matrix('cms_m1_blog_ml');
    }

    // Add getters here 
}

class BlogController {
    // Get mymodel somehow and store it

    public function doStuff() {
         $this->mymodel.getDB();
    }
}

答案 2 :(得分:0)

找到了anwser:)

控制器:

    public function blog(){
        $this->set('data_blog', BlogModel::dbBlog());
    }

    public function index() {
    }
}

型号:

    public static function dbBlog() {
        $db         = new Database(true);
        $entries    = $db->matrix('cms_m1_blog_ml');
        return $entries;
    }
}

所以问题出在模型中,我只需要返回条目并使用控制器中的集合。