多个模型与单个模型

时间:2012-01-20 22:27:44

标签: php model-view-controller kohana-3 hmvc

我对MVC有疑问。特别是关于模特。 假设我的数据库中有一个类别表。现在,我希望获得详细视图的单个类别和列表的多个类别的结果。此外,我可能需要查询多个类别以用于不同目的。

现在的问题是; 拥有两个独立的模型更有意义吗?类似于单个类别的操作的类别模型和类别多个类别的模型操作。

我的想法是,当我使用category模型时,我不需要多个类别的其他详细信息。因此将它们分开对我来说是有意义的但我不确定。

有什么想法吗?

5 个答案:

答案 0 :(得分:5)

问题是你的模型应该支持处理单个和多个记录查询。

所以我的建议是使用一个模型并开发方法来检索所需的确切数据。

为单个数据源设置两个模型只会使事情变得复杂......

答案 1 :(得分:2)

这取决于,您是否需要为单个类别和多个类别保存不同的数据?

如果,您的提案就有意义,否则您的模型中会有冗余字段。我建议明确区分两个模型(不是CategoryCategories,而是SingleCategoryMultipleCategories)。

如果不是,我建议为类别设置一个模型,但为单个和多个类别操作定义不同的操作。我认为这是你的情况。

在后一种情况下,您可以使用抽象超类Category,然后定义两个子项:一个包含单个类别的操作,另一个包含多个类别的操作。

答案 2 :(得分:1)

我们在自己的MVC和ORM中所做的是我们为多个模型实例上的操作创建了一个包装器。哪个是ResultSet。然后结果集能够对例如Category模型数组进行操作。

供参考:https://github.com/Tuxion/tuxion.cms

答案 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)

在我看来,由您使用的语言提供的数组,集合等是模型集合的有效选择,您不应该创建一个简单包装此集合的其他模型,因为它实际上没有实现任何目标。所有。如果要将某个接口与集合关联,可以考虑将该集合包装在模型中。

如果您特别需要存储有关该集合的其他信息,那么您应该将其包装在另一个模型中。

我也不同意你不应该拥有多个模型的想法,因为数据来自同一个数据源。事实上,我认为您不应该将数据库逻辑放在模型本身中,而是使用返回业务对象的单独服务。此级别的封装允许您在应用程序级别操作高级模型(或业务对象),同时将数据访问逻辑与这些对象分离。如果您需要使用其他东西替换数据库,则只需要替换数据访问逻辑和创建模型的接口。