Php 测量模型还是控制器?

Php 测量模型还是控制器?,php,model-view-controller,codeigniter,survey,Php,Model View Controller,Codeigniter,Survey,我对MVC很陌生 我正在使用CodeIgniter创建一个平台,人们可以提交一份调查,然后将其放入数据库中,以便稍后在用户仪表板中使用 现在我有点困惑了,我该如何创建这个调查?我要做控制器还是模型?我会使用这两种方法吗?一种是控制器创建表单,然后是模型将数据提交到数据库 我可以在控制器中直接与数据库交互吗?您的模型应该具有直接与数据库交互的功能,您可以使用另一个自定义类来实现这些模型,控制器将调用该类中的函数。虽然您可以在控制器中实现代码,但您肯定希望使您的代码可读且可访问。模型 通常,数据库表

我对MVC很陌生

我正在使用CodeIgniter创建一个平台,人们可以提交一份调查,然后将其放入数据库中,以便稍后在用户仪表板中使用

现在我有点困惑了,我该如何创建这个调查?我要做控制器还是模型?我会使用这两种方法吗?一种是控制器创建表单,然后是模型将数据提交到数据库


我可以在控制器中直接与数据库交互吗?

您的模型应该具有直接与数据库交互的功能,您可以使用另一个自定义类来实现这些模型,控制器将调用该类中的函数。虽然您可以在控制器中实现代码,但您肯定希望使您的代码可读且可访问。

模型 通常,数据库表由模型表示。例如,如果您有一个名为“surveys”的表,您需要一个surveys\u模型类,该类允许您对该表执行表级操作—选择、插入、更新、删除等

然后,您可以创建另一个模型来表示该表中的一行,名为survey_model注意它是单数的。此类的属性通常与表中的列一一对应。在此模型中,您可以强制执行业务规则。例如,如果您不希望一项调查包含同一个问题两次,则可以在添加新问题时添加逻辑以检查问题是否已经存在

获取数据库记录并创建对象的过程称为“映射”,有一种软件可以自动完成这一过程。您还可以滚动自己的简单映射,因为大多数ORM都有一点学习曲线

您还可以跳过映射,直接使用db结果进行读取/输出。当您想要写入数据时,只需将数据作为参数或数组传递给表级模型

看法 该视图包含前端代码HTML/CSS/JS,用于向用户显示表单。如果用户正在查看现有调查(例如,出于编辑目的),则必须使模型可用于查看或至少查看模型中的部分数据

这里唯一的逻辑应该是为了显示。例如,在特定条件下显示一个文本块,在不同条件下显示另一个文本块,但如果整个输出是有条件的,则应将其拆分为两个视图,并将逻辑移动到控制器以加载正确的视图

控制器 这是控制要显示的视图、加载的模型以及传递给视图的数据的内容。可以传递整个模型,也可以只传递模型中的一些数据

它还控制视图和模型之间的交互。例如,如果发布表单,控制器将获取表单数据,验证表单数据,加载模型,使用post数据更新模型中的数据,然后保存模型。然后,它可以显示一条成功或错误消息,或者重定向到一个全新的页面

有时,您会发现很难在控制器内将相关功能分组在一起,因为其类和方法名称用于路由,或者您会发现控制器变得太长,难以管理。这就是图书馆的用武之地

您可以将逻辑移出控制器并移入库中。通过这种方式,您可以保持控制器精简并分组逻辑,而无需担心对路由的影响


对于全局需要的不需要类的函数,可以将它们放在helpers中。您可以查看内置CI帮助程序,以查看属于帮助程序文件的函数类型。

使用控制器或不访问数据库这不是问题,回到mvc的概念首先,mvc基于使用数据库进行处理的模型,视图可以查看页面,控制器可以控制我们对模型和视图的操作,所以我想知道使用模型和不使用模型对于使用Codeigniter构建一些应用程序来说是没有问题的,只是我们必须回到基本概念,如果你想用MVC的方式来做,你必须使用模型,但如果不使用模型也可以

这是很好的信息,你真的为我澄清了一切。