首页 > 解决方案 > 在 Laravel 项目中,我应该把从数据库表中读取数据的代码放在哪里,这对于多个控制器来说是通用的?

问题描述

背景:

我第一次遇到任何 MVC 框架,因为我正在开发一个使用 PHP Web 框架 Laravel v6 和 MongoDB(使用 jenssegers moloquent)作为数据库引擎的小应用程序。我正在关注教程系列来学习 Laravel 6。

通常,当我使用简单的 php 开发此类应用程序时,我会创建一个名为的文件readFromDb.php,并在其中从所有 DB 表(Mongodb 中的集合)中查找/读取/选择数据。然后我将包含在每个 PHP 文件的顶部,我需要在其中对来自 DB 的任何数据进行一些处理。

例如,如果我有以下集合

  1. allPaintingsCollection
  2. 绘画历史收藏
  3. 绘画类别收藏
  4. 艺术画廊收藏
  5. 绘画艺术家收藏
  6. supervisorArtistsCollection
  7. smPlatformsCollection
  8. 非SmPlatformsCollection
  9. targetSchoolsCollection

我会从它们中选择所有记录/文档到 中的关联数组中readFromDb.php,然后readFromDb.php在我需要显示或处理来自 DB 的数据的每个页面的顶部包含。

问题:

现在,在 Laravel 中,我应该创建这样一个名为的脚本readFromDb.php并将其包含在每个控制器的每个函数之上吗?在这种情况下,我应该把这个readFromDb.php文件放在哪里,以及如何它包含在控制器中?

或者我应该在使用数据库中的数据之前编写代码以从每个控制器的每个函数中的相关数据库集合/表中读取?

标签: phplaraveleloquent

解决方案


Laravel 有 Eloquent ORM提供对象关系映射接口。

简介:

Laravel 中包含的 Eloquent ORM 提供了一个漂亮、简单的 ActiveRecord 实现来处理你的数据库。每个数据库表都有一个相应的“模型”,用于与该表进行交互。模型允许您查询表中的数据,以及将新记录插入表中。

基本上,与您的readFromDb.php文件相同,但它使用 OOP 处理,因此代码库非常易于理解和扩展,并且与您的代码严格相关。

使用 Eloquent 查询时,您使用模型。如果你的查询结果有单行,你会得到一个Model,如果你的结果有多行,你会得到Eloquent\Collection结果集包含你的模型。

最后,你不能在 Laravel 中编写 ORM,因为你已经有了。

如果您认为高级抽象访问器;你应该探索设计模式。之后,您可以考虑存储库模式、装饰器模式等。


推荐阅读