gpt4 book ai didi

php - MVC - 一个模型应该与(一个)其他模型交互吗?或者 Controller 应该这样做?

转载 作者:行者123 更新时间:2023-12-04 18:02:16 25 4
gpt4 key购买 nike

如果这听起来是个愚蠢的问题,我深表歉意,但如果我不问,我将永远学不会。我最近一直在使用 MVC 实现模式,而且我还在学习一些东西,所以请耐心等待。

我最近一直在为一个客户端使用自定义 MVC 框架的多语言网站工作。在某些地方,我需要显示来自多个表的一些信息,比如一篇文章(来自 articles 表),这篇文章所用语言的名称(来自 languages 表),这篇文章的语言尚未写入(也来自语言表)和作者(来自作者表)。

我有一个文章模型、一个语言模型和一个作者模型,每个模型都有自己的 Controller 。

如果我只查询 articles 表或 authors 表,没有问题,但当我想将这些不同表中的信息显示到单个 View 中时,就会出现混淆。

我应该怎么做?

  1. 文章 Controller 中实例化一个语言模型对象和一个作者模型对象并调用它们的相关函数来获取数据,然后将它们的数据与来自 article 模型 的数据组合/合并(如前所述,所有这些都在 article controller 中)?

  2. 实例化文章模型中的语言模型作者模型,并调用它们的函数获取他们的数据,然后将他们的数据与来自文章模型本身的数据合并/合并?

  3. 文章模型中做一个joinnested select从多个表,并且不与任何其他模型交互,即使这意味着某些查询将在多个模型中重复?

  4. 另一种方法?

最好的方法是什么?

最佳答案

这可以通过多种方式完成:
- 创建一个 View (MySQL 的虚拟表),它使用连接、嵌套选择或任何你想要获得所有必要信息的方式,并在 MVC 中在此 View 之上创建一个模型(此模型只能从 View 中检索信息而不能更改它, 然而)
- 使用存储库模式。存储库包含许多模型,您可以在此处实现业务逻辑(可能是多个模型/表上的 CRUD)。 Controller 简单地使用存储库而不是模型。
总结模型,存储库应该包装它自己的所有业务逻辑,永远不要让 Controller 做这些事情。
问候,

关于php - MVC - 一个模型应该与(一个)其他模型交互吗?或者 Controller 应该这样做?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33071845/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com