上周我读过一本关于MVC的书和关于设计模式的一般书,但我仍然对我的代码中SQL查询的位置感到困惑:模型还是控制器?
我们举一个非常简单的例子,你有一个/热门页面,可以在网站上打印5个最受欢迎的故事。
在您的模型中,您将拥有一个准备好的staments类,以及一个用于协助创建SELECT查询的类。在您看来,您拥有显示/热门页面的HTML元素。
查询在哪里"选择最受欢迎的故事LIMIT 5"属于?这是控制器类应该问的问题,从模型中获取查询方法并传递给视图,还是应该在与/热门页面相关的模型类上声明查询?
区别是否相关?将该查询置于控制器或模型上是否都被认为是构建MVC的专业方法?
谢谢。似乎大多数人都不清楚理解控制器上的内容
编辑:感谢大家的帮助。不幸的是,作为一个新帐户,我无法推荐任何有用的帖子
答案 0 :(得分:-1)
通常(根据我对MVC框架的经验),模型层负责处理MVC中与数据库相关的东西。
考虑以下方法:
请注意,模型是放置所有验证规则的好地方,也是一些辅助方法,因为它们可以在PHPUnit中轻松测试。
答案 1 :(得分:-1)
这是一个关于它如何运作的非常简约的例子。
// Model.php
<?php
class Model
{
public function __construct(Database $db){
$this->db = $db;
}
public function getPosts() {
$this->db->query("YOUR SQL QUERY HERE");
return $this->db->single();
}
}
// Controller.php
<?php
class Controller
{
public function __construct() {
$this->model = new Model($dbh);
}
public function postsPage() {
$posts = $this->model->getPosts();
// TODO: render posts
}
}
基本上,您在控制器中实例化数据库,以便将其注入您使用的任何模型。数据库处理程序可以是您创建的类(&lt; - 我推荐这个)或只是PDO处理程序。总的来说,控制器会向模型请求信息,控制器将调用视图类来相应地呈现。