Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP和MVC,多模型_Php_Model View Controller_Oop_Frameworks - Fatal编程技术网

PHP和MVC,多模型

PHP和MVC,多模型,php,model-view-controller,oop,frameworks,Php,Model View Controller,Oop,Frameworks,在一个控制器动作中处理多个模型是一个坏习惯吗? 它应该总是像一个控制器一个模型一个视图吗?不,当然这不是一个坏习惯。如果使用多个表,则需要各种模型 问题不在于此,而在于框架能够处理基于这些模型的高级查询、连接和过滤。当您“被迫”遵循框架对数据库交互的特殊审美观时,这是一个令人担忧的问题,但这当然取决于哪个框架以及您对神奇行为的依赖程度 不是每个项目都是一个简单的博客!:) 编辑:我还应该说,这种事情是我对MVC框架的主要抱怨之一。您的项目试图实现的目标与框架所允许的目标之间的折衷始终是头发脱落和

在一个控制器动作中处理多个模型是一个坏习惯吗?
它应该总是像一个控制器一个模型一个视图吗?

不,当然这不是一个坏习惯。如果使用多个表,则需要各种模型

问题不在于此,而在于框架能够处理基于这些模型的高级查询、连接和过滤。当您“被迫”遵循框架对数据库交互的特殊审美观时,这是一个令人担忧的问题,但这当然取决于哪个框架以及您对神奇行为的依赖程度

不是每个项目都是一个简单的博客!:)


编辑:我还应该说,这种事情是我对MVC框架的主要抱怨之一。您的项目试图实现的目标与框架所允许的目标之间的折衷始终是头发脱落和深夜投入。

我无法想象一次只能使用一个模型。这些数据库被称为“关系数据库”是有原因的。所有的桌子都相互作用


我实际上使用了一个只允许加载一个和那个控制器相关联的模型的框架。绝对是一次可怕的经历,唯一有效的操作是基本的CRUD操作。

就像其他人说的那样,你可以自由地做你想做的事。我建议你在网站上查找你正在使用的框架,看看其他人是如何使用它的。他们经常有“使用XXXX框架的项目”


和特罗尔斯金的评论一样,1个表并不总是等于一个模型。一些使用基本活动记录模式的示例(如CodeIgniter)倾向于使用表1模型方法。

不,这不是一个坏做法


控制器更多地映射到HTTP资源(aka.uri)而不是数据模型。对特定资源(用户、产品等)的请求通常需要从不同的位置(数据库表、文件系统、远程web服务等)加载和/或存储数据,因此1:1控制器:模型映射可能是例外,而不是规则。除非你的网站非常简单。

在我看来,你的大部分代码应该在你的模型中,其中会有很多类。绝对不是模型和控制器之间的一对一映射。那将是一件坏事。是的,每个人都喜欢胖模特:)我同意这个答案,但我只想指出那张桌子!=模型。如果这有帮助的话,别忘了按下accept(点击勾号):)首先我这样做,控制器只有一个模型,所以我必须在主模型中实例化其他模型,以便我可以处理多个模型。它增加了一点等级制度P所以在一个控制器动作中实例化多个模型是可能的,它们之间不必有任何关联..好问题!很遗憾,似乎没有人关心这样的问题!