使用 Truffle 的内存 Eloquent 模型

最后更新于 经过

使用 Truffle 图像的内存 Eloquent 模型

松露 , 经过 你是主人。 是一个 Laravel 扩展包,它允许 Eloquent 模型使用内存中的 SQLite 数据库,而不是主数据库。这种方法适用于处理静态数据和引用表(例如国家/地区、货币或角色),您可以利用 Eloquent 查询这些数据,而无需进行数据库迁移或在主数据库中存储数据。

通过使用 Truffle 特性允许您直接在模型中定义数据,或从外部文件加载数据,同时仍然可以使用 Eloquent 的查询构建器、关系和属性。

定义内存记录

使用 Truffle 的最简单方法是定义一个 $records 数组直接存储在模型中。Truffle 会创建一个临时 SQLite 表,并在首次访问模型时填充该表:

使用 你\松露\松露 ;
使用 照亮\数据库\雄辩\模型 ;
班级 国家 延伸 模型
{
使用 松露 ;
受保护 记录 = [
[ 'ID' => 1 , '姓名' => '美国' , '代码' => '我们' ],
[ 'ID' => 2 , '姓名' => '加拿大' , '代码' => '那' ],
[ 'ID' => 3 , '姓名' => '英国' , '代码' => “GB” ],
[ 'ID' => 4 , '姓名' => “牙买加” , '代码' => 'JM' ],
[ 'ID' => 5 , '姓名' => '希腊' , '代码' => 'GR' ],
];
}

然后,您可以像查询任何其他 Eloquent 模型一样查询此模型:

北美 = 国家 :: 其中 '代码' ,[ '我们' , 'JM' ]) -> 得到 ();

从文件中加载数据

随着数据集的增长,Truffle 支持将这些记录移动到 CSV、JSON 或 XML 文件中。您可以使用以下方式指定文件路径: $truffleFile 财产:

班级 国家 延伸 模型
{
使用 松露 ;
受保护 $truffleFile = __你__ '/data/countries.csv' ;
}

这样既可以保持数据与模型逻辑的分离,又能对其进行版本控制。

显式模式定义

虽然 Truffle 通常可以推断列类型,但您可以使用以下方式显式定义模式: DataType 使用枚举来确保数据库完整性和参考数据的正确类型转换:

使用 你\松露\枚举\数据类型 ;
班级 国家 延伸 模型
{
使用 松露 ;
受保护 $schema = [
'ID' => 数据类型 :: ID ,
'姓名' => 数据类型 :: 细绳 ,
'代码' => 数据类型 :: 细绳 ,
'积极的' => 数据类型 :: 布尔值 ,
];
}

性能和缓存

Truffle 包含缓存功能,有助于提升请求性能。启用此功能后,即可启用缓存。 $truffleCache 该软件包会缓存生成的 SQLite 表结构和数据:

受保护 $truffleCache = 真的 ;
受保护 $truffleCacheTtl = 3600 ; // 1 小时

此外,如果您希望将“内存中”的数据库持久化到特定文件而不是使用内存,您可以定义一个 $truffleSqliteFile

安装

您可以通过 Composer 安装该软件包:

作曲家 要求 你/松露

将特性添加到模型后,该软件包即可直接使用。它需要 PHP 7.4 或更高版本,并支持 Laravel 5.5 及更高版本。

您可以访问以下网址了解更多关于此软件包的信息、获取完整的安装说明并查看源代码: GitHub

Yannick Lyn Fatt 的照片

Laravel News 的特约撰稿人和全栈 Web 开发人员。

归档于:
立方体

Laravel 时事通讯

加入超过 4 万名开发者的行列,不错过任何新的技巧、教程等内容。

图像
了解软科技

以每小时 20 美元的价格聘请具备人工智能专业知识的 Laravel 开发人员。48 小时内即可开始工作。

访问 Acquaint Softtech
Tinkerwell 徽标

廷克威尔

Laravel 开发者必备的代码运行器。可在本地和生产环境中体验 AI、自动补全和即时反馈功能。

廷克威尔
Lucky Media 标志

幸运传媒

Get Lucky Now——拥有十余年经验的 Laravel 开发理想之选!

幸运传媒
SaaSykit:Laravel SaaS 入门套件徽标

SaaSykit:Laravel SaaS 入门套件

SaaSykit 是一个多租户 Laravel SaaS 入门套件,包含运行现代 SaaS 所需的所有功能,例如支付、美观的结账界面、管理面板、用户仪表盘、身份验证、现成组件、统计数据、博客、文档等等。

SaaSykit:Laravel SaaS 入门套件
了解 Softtech 的标志

了解软科技

Acquaint Softtech 提供 AI 就绪的 Laravel 开发人员,48 小时内即可上手,每月费用为 3000 美元,没有冗长的销售流程,并提供 100% 退款保证。

了解软科技
鱼叉:新一代时间跟踪和发票标志

Harpoon:新一代时间跟踪和发票系统

新一代时间跟踪和计费软件,帮助您的机构规划和预测盈利的未来。

Harpoon:新一代时间跟踪和发票系统
Shift 标志

转移

还在运行旧版本的 Laravel?立即实现 Laravel 自动升级和代码现代化,让您的应用程序保持最新状态。

转移
Laravel Cloud 标志

Laravel 云

轻松创建和管理服务器,并在几秒钟内部署 Laravel 应用程序。

Laravel 云
Kirschbaum 标志

樱桃树

提供创新和稳定性,确保您的Web应用程序取得成功。

樱桃树
PhpStorm 标志

PhpStorm

首选的 PHP IDE,对 Laravel 及其生态系统提供广泛的开箱即用支持。

PhpStorm
绝不妥协标志

绝不妥协

来自 No Compromises 播客的两位经验丰富的开发者 Joel 和 Aaron 现在可以为您的 Laravel 项目提供服务。⬧ 固定费用 9500 美元/月。⬧ 无冗长的销售流程。⬧ 无需签订合同。⬧ 100% 退款保证。

绝不妥协
工具包:适用于 Laravel AI SDK 镜像的可重用 AI 工具

工具包:适用于 Laravel AI SDK 的可重用 AI 工具

阅读文章
Laracon US 2026 公布完整扬声器阵容图片

Laracon US 2026 公布完整演讲嘉宾阵容

阅读文章
PHP 2026 年发展状况调查现已开放(图片)

《2026年菲律宾比索发展状况调查》现已开放

阅读文章
使用 Laradocs 镜像在 Laravel 应用中实现版本控制文档

使用 Laradocs 在 Laravel 应用中实现版本控制文档

阅读文章
Laravel 13.15.0 中的类型化翻译访问器

Laravel 13.15.0 中的类型化翻译访问器

阅读文章
刷新 Laravel 数据库而不删除所有表图片

无需删除所有表即可刷新 Laravel 数据库

阅读文章