linkorb/sage

Sage:支持虚拟字段的分布式数据仓库的活跃记录接口

v1.5.0 2023-11-02 12:56 UTC

This package is auto-updated.

Last update: 2024-08-31 00:29:45 UTC


README

Sage实例允许您

  1. 以内存数组的形式透明地访问存储在不同类型存储库(PDO、数组、缓存、NdJson文件等)中的数据
  2. 遍历它们之间的一对多、多对一关系
  3. 访问虚拟字段(类似于GraphQL字段解析器)以进行修改、计算和其他高级用例

Sage可以被视为linkorb/context的继承。

使用方法

  1. 实例化一个新的Sage\Sage实例
  2. 为每个您想要访问的表/集合实例化一个存储库
  3. 将存储库附加到Sage实例
  4. 添加“虚拟字段”以指定表之间的关系或添加数据修改器
  5. 使用带有条件的常见findAll()查询表
  6. 将结果行作为数组访问,允许您遍历数组,就像它完全在内存中一样(Sage在后台懒加载访问的行)。

定义

  • Sage:一组存储库和虚拟字段

  • 存储库:类似于数据库表/集合。可能由不同的存储方法支持(请参阅src/Repository/中的当前实现)

  • 记录:内存中的记录可以作为数组($user['name'])访问,并通过虚拟字段支持与其他表的多对一和一对多关系

用例

  • 快速应用开发:您无需为对象(带有getter/setter等)建模即可与其交互。只需加载原始数据(例如来自json、yaml、数组、pdo等)即可遍历存储库及其中的记录。
  • 复杂的病历映射/转换:使用“上下文”(单个病历或患者的相关记录的子集)然后轻松遍历它及其关系。
  • 结构化文档:根据其领域建模信息,然后将其加载到上下文中并使用(twig/mustache/handlebars)模板遍历信息。
  • GraphQL数据存储:本质上,Sage实例是一个图。因此,可以使用上下文生成一个GraphQL服务器,其他应用程序可以使用该服务器以他们选择的格式轻松查询上下文。
  • 自然用户界面/电子邮件/视图生成:只需将上下文定义到视图中,然后使用任何模板语言(如twig、handlebars、mustache等)遍历它。无需额外的控制器逻辑。

许可

MIT(请参阅LICENSE.md

由LinkORB工程技术团队提供


请查看我们的其他项目linkorb.com/engineering

顺便说一下,我们在招聘!