linkorb / extractor
提取器:通过查询包提取上下文
Requires
- linkorb/boost: ^1.0
- symfony/expression-language: ^4.0
Requires (Dev)
- symfony/yaml: ^4.0
This package is auto-updated.
Last update: 2024-09-18 03:31:19 UTC
README
提取器 是一个库,允许您从 连接(数据库、文件、API 等)中提取数据到一个简单的 JSON 数组,以便进行进一步处理。
无需编程,您只需要编写提取器定义。
用例
- 从无法修改的应用程序中提取数据
- 报告
- 收集上下文数据(与实体 "X" 相关的所有记录)。
提取器 + 上下文 = <3
提取器与 github.com/linkorb/context 协同工作特别出色
您可以使用提取器的输出将数据加载到上下文中进行进一步处理。这使您能够指定高级多向关系,以进行灵活的内存导航。
示例:wordpress-post-extractor.yaml
查看 examples/wordpress-post-extractor.yaml 定义文件中的简单示例。
此示例需要一个名为 Input 的 postName
。
基于输入,它运行一系列命令。
每个命令都有一个 method
。不同的连接支持不同的方法。例如,PdoConnection
支持查询方法,而 XyzApiConnection
可能支持 request
等方法。
您可以指定包含一组占位符的 SQL 查询。
占位符在执行命令之前作为参数传递。这允许您从 "inputs" 表或之前查询过的表中传递参数。
在 wordpress 示例中,您会看到第一个命令传递了从初始输入中获取的 postName
。
第二个命令传递了在第一个命令中检索到的 postId
。
这允许您将查询堆叠在彼此之上。
输出格式
提取器收集一组表,每张表有若干行。您可以将其视为数据库的快照。
输出是一个简单的数组(您可以对其进行 json_encode),如下所示
{
"inputs": [
{
"postName": "hello-world"
}
],
"posts": [
{
"ID": "3021",
"post_title": "Hello world",
"post_name": "hello-world",
"post_date": "2018-06-17 09:00:00",
"post_status": "publish"
}
],
"comments": [
{
"comment_ID": "431",
"comment_author": "Joe Johnson",
"comment_author_email": "joe@example.com",
"comment_date": "2018-06-17 11:06:00",
"comment_content": "Hello to you too!"
},
{
"comment_ID": "452",
"comment_author": "Alice Alisson",
"comment_author_email": "alice@example.com",
"comment_date": "2018-06-17 13:21:00",
"comment_content": "Nice post! and a 'Hello' back :-)"
}
}
}
您会看到 "inputs" 提供了一个包含单行的表。 "posts" 表包含一个行,该行基于输入参数选择。 "comments" 表包含所有与 postId 匹配的行。
请注意,行没有键,需要使用这些提取的代码来分配行 ID 或构建索引(如果需要)。
给评论表添加有用 ID 的简单方法之一是根据每行的 comment_ID
。
$comments = []; foreach ($data['comments'] as $i=>$row) { $comments[$row['comment_ID']] = $row; } $data['comments'] = $comments;
许可证
MIT(见 LICENSE.md)
由 LinkORB 工程团队提供
在我们的工程网站上查看我们的其他项目 linkorb.com/engineering。
顺便说一下,我们正在招聘!