迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称:dataComposer开源软件地址:https://gitee.com/peiyu1979/dataComposer开源软件介绍:dataComposer简介datacomposer :数据聚合器 可以把 mysql,mongo,http api,xml, excel 等不同来源的数据按照数据列对应关系(类似于主键外键)聚合成树状结构的数据集合的实用小工具。 它是php第三方类库,通过composer工具安装或升级 目前支持的php框架:laveral, thinkphp。如需其他框架支持可联系作者。 本工具不是数据查询器,不能跨数据源连接查询(join),在下面有详细说明 痛点和效果在程序员的日常开发工作中,总是需要同时从多个数据库多个表里读取数据合并在一起,甚至还需要从http api取得数据合并到数据集合里。这些工作模式大同小异,繁琐并且重复。设计这个小工具的目的是为了比较简单的解决关联数据的聚合问题。 通过简单的配置就可以从多种数据源里获取数据,并按照定义的数据对应关系组装数据,省去了大量sql和重复代码。 小例子如下有两张表,想在获取订单数据时,同时获取对应的商户数据。
return [ "property" => [ "tableName" => "order", ], "dataSource" => [ "customer" => [ "property" => [ "tableName" => "customer", "relationKey" => ["customer_id" => "id"] ] ] ]]
$dc=new Engine("order");$data=$dc->GetData(); 数据如下 [ [ "id" => 1, "customer_id" => 333, "customer"=>[ "id"=>333, "name"=>"小米", "address"=>"北京" ], "address" => "北京海淀西办街12号", "name" => "张三", "mobile" => "13455555555", "number" => 3 ], [ "id" => 2, "customer_id" => 354, "customer"=>[ "id"=>354, "name"=>"华为", "address"=>"深圳" ], "address" => "上海天津街45号301", "name" => "李四", "mobile" => "17634343434", "number" => 1 ]]; 支持的数据源
安装通过 composer 安装 composer require peiyu/data-composer 环境要求
组成
起步
composer require peiyu/data-composer
'frameworkType'=>"thinkphp", // laveral 或 thinkphp,默认为 laveral 。如果框架是 laveral 可注释本行 app.php文件位置请参阅各自框架的技术文档
内容如下 return [ 'connectType'=>'db', //默认数据源类型,可选项: 'db','mongo','redis','api','file','excel' 'maxLimit'=>1000, //每个数据源最大行数 'cacheEnable'=>false, //是否启用缓存 'cacheExpire'=>10, //缓存时间(分钟)];
//use DataComposer\Engine; //必要引用$dc=new Engine("order"); // order 就是 数据源文件文件名$data=$dc->GetData();return $data;
技术手册请先查看“DataComposer脑图” DataComposer主要由以下三部分组成 1. 通用配置frameworkType
conf.php
2. 数据源定义数据源文件
数据节点每个数据节点都支持独立定义,互不影响。
"property" => [ "tableName" => "worker", "where" => [["{$k}", '>', '{$v}']], ],
db (关系型数据库)类型的property配置
"relationKey" => ["customer_id" => "id"]
"where"=>[["id",'>',23],["status",1]]
"whereIn" => ["id"=>[24,25],"status"=>[1,2]]
"orderBy"=>[["status",'desc'],["id"]]
"fields"=>["id","status"]
mongo 类型的property配置
"relationKey" => ["customer_id" => "id"]
"where"=>[["id",'>',23],["status",1]]
"whereIn" => ["id"=>[24,25],"status"=>[1,2]]
"orderBy"=>[["status",'desc'],["id"]]
"fields"=>["id","status"]
redis 类型的property配置
"relationKey" =>"customer_id"
http api 类型的property配置
"relationKey" => ["customer_id" => "id"]
"options"=>[ "query"=>["id"=>44,"_d_"=>"ekss88"], "form_params"=>["name"=>"nam","s"=>1], "headers"=>[], "timeout"=>3]
文件类型的property配置
"relationKey" => ["customer_id" => "id"]
excel类型的property配置
"relationKey" => ["customer_id" => "id"]
3. 调用代码引用use DataComposer\Engine; //必要引用 实例化
$dc=new Engine("order"); // order 就是 数据源文件文件名
给【property】属性中的变量赋值,如果【property】属性中的无变量,可忽略次项
//如果 property 如下"property" => [ "tableName" => "worker", "where" => [["id", '>', '{$_id}'],['name','{$_name}']], ], // 则 赋值代码如下$dc->SetParameterValue('worker',['_id'=>23,'_name'=>'li']); 获取数据$data=$dc->GetData(); GetData 方法还有一个可选参数
如果本次获取数据只需要部分节点数据,就可以把需要的节点名组成数组输入。注意:根节点名无效。如果父级节点名不在数组中,子节点名会被忽略。 $data=$dc->GetData(['customer']); 4. 高级用法
![]() |
请发表评论