我正在阅读很多关于MVC的教程,所以我的问题是,一个完美的PHP MVC框架可以在Controller中进行数据库查询吗?据我了解,最舒服的方法是将所有数据库查询都放在Model中,对吧?如果我有POST或smth,我只是将POST传递给Model,它会进行所有插入等等吗?
或者我错过了什么?如果Controller可以有数据库查询,那么它会在哪种情况下呢?
答案 0 :(得分:7)
没有控制器可能没有任何与数据库相关的代码 - 任何数据库查询都可以存储在MVC架构的模型中 - 控制器只能用于模型,但不能直接用于数据库
编辑:大多数框架都允许直接从Controller调用SQL - 但它不是MVC,而是一堆对象答案 1 :(得分:6)
没有控制器不能IDEALLY和CONCEPTUALLY包含任何数据库查询。如果您在控制器本身中有一些查询,那么它将消除MVC架构的一些关键优势,例如Code Segregation等。
理想情况下,你的, 模型类(M)必须包含数据库查询以及通过数据库对象与数据库的任何交互。理想情况下,模型表示DB中的表或用于io的文件
Views(V)必须包含非常少的PHP的HTML。在大多数情况下,只使用循环和条件语句
控制器类(C)必须包含应用程序的所有业务逻辑,错误处理程序等。
维护MVC架构在维护,调试以及代码理解方面非常有用,从而形成新的开发人员。如上所述,这些规范带来了很多好处。
答案 2 :(得分:2)
技术上 - 是的,这是可能的。但它会打破MVC背后的整个想法。
答案 3 :(得分:0)
在我的软件中,我可以从模型中提取查询对象并从控制器内部执行它们:
$model->dsql()->where('age>',20)->do_delete();
技术上 - 是的,控制器可以执行查询,但它必须依赖模型来构建该查询。