我对MVC有疑问。特别是关于模特。 假设我的数据库中有一个类别表。现在,我希望获得详细视图的单个类别和列表的多个类别的结果。此外,我可能需要查询多个类别以用于不同目的。
现在的问题是; 拥有两个独立的模型更有意义吗?类似于单个类别的操作的类别模型和类别多个类别的模型操作。
我的想法是,当我使用category
模型时,我不需要多个类别的其他详细信息。因此将它们分开对我来说是有意义的但我不确定。
有什么想法吗?
答案 0 :(得分:5)
问题是你的模型应该支持处理单个和多个记录查询。
所以我的建议是使用一个模型并开发方法来检索所需的确切数据。
为单个数据源设置两个模型只会使事情变得复杂......
答案 1 :(得分:2)
这取决于,您是否需要为单个类别和多个类别保存不同的数据?
如果,您的提案就有意义,否则您的模型中会有冗余字段。我建议明确区分两个模型(不是Category
和Categories
,而是SingleCategory
和MultipleCategories
)。
如果不是,我建议为类别设置一个模型,但为单个和多个类别操作定义不同的操作。我认为这是你的情况。
在后一种情况下,您可以使用抽象超类Category
,然后定义两个子项:一个包含单个类别的操作,另一个包含多个类别的操作。
答案 2 :(得分:1)
我们在自己的MVC和ORM中所做的是我们为多个模型实例上的操作创建了一个包装器。哪个是ResultSet。然后结果集能够对例如Category模型数组进行操作。
答案 3 :(得分:0)
这取决于你!
你是程序员,无论你喜欢什么,都是如此。
但是要添加我的推理:
单个模型类在可读性和可维护性方面会更好!
e.g。
class get_fruits
{
function all_fruit(){}
function one_fruit(){}
}
对于阅读代码的其他程序员来说,这将非常容易理解
e.g。
$get = new get_fruit();
$europeanfruits = $get->all_fruits("European");
$apple = $get->one_fruit ("Apple");
希望这有帮助!
请记住,只要它适合您,就没有正确或错误的解决方案!
答案 4 :(得分:0)
在我看来,由您使用的语言提供的数组,集合等是模型集合的有效选择,您不应该创建一个简单包装此集合的其他模型,因为它实际上没有实现任何目标。所有。如果要将某个接口与集合关联,可以考虑将该集合包装在模型中。
如果您特别需要存储有关该集合的其他信息,那么您应该将其包装在另一个模型中。
我也不同意你不应该拥有多个模型的想法,因为数据来自同一个数据源。事实上,我认为您不应该将数据库逻辑放在模型本身中,而是使用返回业务对象的单独服务。此级别的封装允许您在应用程序级别操作高级模型(或业务对象),同时将数据访问逻辑与这些对象分离。如果您需要使用其他东西替换数据库,则只需要替换数据访问逻辑和创建模型的接口。