php - 在 Laravel 项目中,我应该把从数据库表中读取数据的代码放在哪里,这对于多个控制器来说是通用的?
问题描述
背景:
我第一次遇到任何 MVC 框架,因为我正在开发一个使用 PHP Web 框架 Laravel v6 和 MongoDB(使用 jenssegers moloquent)作为数据库引擎的小应用程序。我正在关注本教程系列来学习 Laravel 6。
通常,当我使用简单的 php 开发此类应用程序时,我会创建一个名为的文件readFromDb.php
,并在其中从所有 DB 表(Mongodb 中的集合)中查找/读取/选择数据。然后我将包含在每个 PHP 文件的顶部,我需要在其中对来自 DB 的任何数据进行一些处理。
例如,如果我有以下集合
- allPaintingsCollection
- 绘画历史收藏
- 绘画类别收藏
- 艺术画廊收藏
- 绘画艺术家收藏
- supervisorArtistsCollection
- smPlatformsCollection
- 非SmPlatformsCollection
- targetSchoolsCollection
我会从它们中选择所有记录/文档到 中的关联数组中readFromDb.php
,然后readFromDb.php
在我需要显示或处理来自 DB 的数据的每个页面的顶部包含。
问题:
现在,在 Laravel 中,我应该创建这样一个名为的脚本readFromDb.php
并将其包含在每个控制器的每个函数之上吗?在这种情况下,我应该把这个readFromDb.php
文件放在哪里,以及如何将它包含在控制器中?
或者我应该在使用数据库中的数据之前编写代码以从每个控制器的每个函数中的相关数据库集合/表中读取?
解决方案
Laravel 有 Eloquent ORM提供对象关系映射接口。
简介:
Laravel 中包含的 Eloquent ORM 提供了一个漂亮、简单的 ActiveRecord 实现来处理你的数据库。每个数据库表都有一个相应的“模型”,用于与该表进行交互。模型允许您查询表中的数据,以及将新记录插入表中。
基本上,与您的readFromDb.php
文件相同,但它使用 OOP 处理,因此代码库非常易于理解和扩展,并且与您的代码严格相关。
使用 Eloquent 查询时,您使用模型。如果你的查询结果有单行,你会得到一个Model,如果你的结果有多行,你会得到Eloquent\Collection结果集包含你的模型。
最后,你不能在 Laravel 中编写 ORM,因为你已经有了。
如果您认为高级抽象访问器;你应该探索设计模式。之后,您可以考虑存储库模式、装饰器模式等。
推荐阅读
- haskell - 是否可以在 Haskell 中具有具有多个类型签名的函数
- php - 根据持续时间以百分比计算 div 宽度
- ruby-on-rails - Rails activeadmin 导出 PDF
- git - 当我克隆按钮单击时括号 Git 错误
- reporting-services - web.config 中的 Vuejs 和 SSRS 报告连接
- python - 性能 - 在 Python 中比较 2 个大型字符串列表的最快方法
- javascript - 在常规 html 页面中使用 vue-multiselect.js
- wordpress - 如果 WordPress 类别为空,如何显示一行文本?
- r - order 函数如何打破 R 中的关系?
- xamarin.forms - Xamarin 跨平台蓝牙连接示例代码