linkorb / sage
Sage:支持虚拟字段的分布式数据仓库的活跃记录接口
v1.5.0
2023-11-02 12:56 UTC
Requires
- linkorb/connector: ^1.0
Requires (Dev)
- symfony/dotenv: ^4.0
README
Sage实例允许您
- 以内存数组的形式透明地访问存储在不同类型存储库(PDO、数组、缓存、NdJson文件等)中的数据
- 遍历它们之间的一对多、多对一关系
- 访问虚拟字段(类似于GraphQL字段解析器)以进行修改、计算和其他高级用例
Sage可以被视为linkorb/context的继承。
使用方法
- 实例化一个新的Sage\Sage实例
- 为每个您想要访问的表/集合实例化一个存储库
- 将存储库附加到Sage实例
- 添加“虚拟字段”以指定表之间的关系或添加数据修改器
- 使用带有条件的常见
findAll()
查询表 - 将结果行作为数组访问,允许您遍历数组,就像它完全在内存中一样(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。
顺便说一下,我们在招聘!