Controller可以有数据库查询(MySQL)吗?如果是,何时?

goo*_*ing 4 php mysql oop model-view-controller frameworks

我正在阅读很多关于MVC的教程,所以我的问题是,一个完美的PHP MVC框架可以在Controller中进行数据库查询吗?据我了解,最舒服的方法是将所有数据库查询都放在Model中,对吧?如果我有POST或smth,我只是将POST传递给Model并且它会进行所有插入等等?

或者我错过了什么?如果Controller可以进行数据库查询,那么它会在哪种情况下?

Ser*_*geS 8

没有控制器可能没有任何与数据库相关的代码 - 任何数据库查询都可以存储在MVC架构的模型中 - 控制器只能用于模型,但不能直接用于数据库

编辑:大多数框架将允许直接从Controller调用SQL - 但它不是MVC,而是一堆对象


小智 6

没有控制器必须不是IDEALLY和CONCEPTUALLY包含任何数据库查询.如果您在控制器本身中有一些查询,那么它将消除MVC架构的一些关键优势,例如Code Segregation等.

理想情况下,您的模型类(M)必须包含数据库查询以及通过数据库对象与数据库的任何交互.理想情况下,模型表示DB中的表或用于io的文件

视图(V)必须包含非常少的PHP的HTML.在大多数情况下,仅使用循环和条件语句

控制器类(C)必须包含应用程序的所有业务逻辑,错误处理程序等.

从维护,调试和代码理解方面维护MVC架构对于新开发人员的预期非常有用.如上所述,这些规范带来了许多好处.

  • 我同意不同意.控制器只能用于控制应用程序的流程.错误处理和业务逻辑应包含在您的模型中.我想知道模特可以100%靠自己站立.他们处理自己的验证,逻辑和错误处理.我想我们都有不同的意见. (2认同)