如果这听起来是个愚蠢的问题,请道歉,但如果我从不问,我将永远不会学习。我最近一直在使用MVC实现模式,我还在学习东西,所以请耐心等待。
我最近一直致力于为客户端使用自定义MVC框架的多语言网站。在某些地方,我需要显示来自多个表的一些信息,例如文章(来自文章表),撰写本文的语言的名称(来自语言表),本文的语言尚未写入(来自语言表)和作者(来自作者表)。
我有文章模型,语言模型和作者模型,每个都有自己的控制器。
如果我只查询文章表或仅查询作者表,则没有问题,但是当我想将来自这些不同表的信息显示到单个视图中时,会出现混淆。
我应该怎么做?
在 language model object
中实例化author model object
和article controller
并调用其相关函数以获取数据,然后合并/合并其数据使用article model
(所有 article controller
中的数据)?
实例化 language model
中的author model
和article model
并调用其函数以获取其数据,然后合并/合并其数据使用 article model
本身的数据?
在 article model
中执行加入或嵌套选择以从多个表中获取数据,而不是与任何其他模型进行交互,即使这意味着某些查询将在模型上重复进行?
另一种方法?
最好的方法是什么?
答案 0 :(得分:0)
这可以通过以下几种方式完成:
- 创建一个视图(MySQL的虚拟表),它使用连接,嵌套选择或任何你想要的所有必要信息,并在MVC中的这个视图上创建一个模型(这个模型只能从视图中检索信息而不改变它但是)
- 使用存储库模式。存储库包装了许多模型,您可以在此处实现业务逻辑(可能是多个模型/表上的CRUD)。控制器只使用存储库而不是模型
总之,模型,存储库应该包装自己的所有业务逻辑,永远不要让控制器做这些事情
的问候,