【问题标题】:Help with Codeigniter and MVC model patternCodeigniter 和 MVC 模型模式的帮助
【发布时间】:2011-04-30 00:56:46
【问题描述】:

我正在创建一个类似于 wordpress 博客的网站,首页将显示一个帖子循环:带有 post_summary、作者信息和标签。

我有四张桌子:

posts | users | tags | tag relationships

要显示我需要在 SELECT 语句中执行多个 JOIN 的所有结果

但是,为了保持 MVC 模式,每个表(或对象?)都应该有一个模型。所以我的问题是:如果我执行 SELECT all,我将如何执行此操作并仍然保持 MVC 模式?

要获取帖子所需的所有信息,我需要 author_id 从用户表中获取我的信息,并且我需要 post_id 来获取标签(等等)。如果我的所有查询都在不同的模型中,那么执行查询的最佳方式是什么?

我是否制作了一个可以完成所有 JOINS 的模型并直接使用它?我应该从视图中加载模型吗?还是应该在 Controller 中做额外的查询工作?

【问题讨论】:

    标签: model-view-controller codeigniter model


    【解决方案1】:

    我认为您对模型的用途有误解。模型用于处理数据库中的数据,并且不限于每个模型 1 个表。如果你正在创建一个博客,你真的只需要一个模型。查看 codeigniter 网站上的教程,http://codeigniter.com/tutorials/watch/blog/,并重新阅读模型用户指南,http://codeigniter.com/user_guide/general/models.html。 您可能会将 MVC 与 ORM 混淆

    【讨论】:

      【解决方案2】:

      不要为连接制作模型。正如@Johnny 已经回答的那样,模型和表不需要具有一对一的关系。在这种情况下,您正在显示博客条目,因此您可以有一个名为“Blog”的模型,并带有一个方法“GetList()”。该查询是否涉及多个表无关紧要。

      从概念上考虑它。您正在显示博客条目,并且每个博客条目都有与之关联的其他对象(例如用户 ID)。试着考虑领域驱动,而不是表驱动。

      【讨论】:

        【解决方案3】:

        为 JOINS 制作一个模型。它可以包括 post_summary、recent_cmets 等。
        只需在front_page 控制器、side_bar 控制器(用于recent_cmets 等)中使用即可。

        最好不要将查询工作直接放在视图或控制器中,并且视图不需要访问模型 IMO。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-11-26
          • 1970-01-01
          • 1970-01-01
          • 2012-04-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-24
          相关资源
          最近更新 更多