lany/mingdaoyun

1.5.0 2024-03-07 02:35 UTC

README

针对mingdaoyun的API封装的PHP-SDK包

Python 版本:https://github.com/ghostlitao/mingdaoyun-python-sdk

Features

  • 封装基础API
  • 固定数据的CRUD
  • syncToDB 功能
  • 明道云组织架构接口

Installing

$ composer require lany/mingdaoyun

Usage

  • Laravel (>=5.5) 1.2.0开始支持

    发布配置文件

$ php artisan vendor:publish --provider="Lany\MingDaoYun\Provider\ServiceProvider"

修改.env,添加配置

MINGDAOYUN_APP_KEY=xxx
MINGDAOYUN_SIGN=xxx
MINGDAOYUN_HOST=http://xxx.com

示例代码

use Lany\MingDaoYun\MingDaoYun;
class IndexController extends Controller 
{
   //依赖注入方式
   public function index(MingDaoYun $mdy)
   {
       $data = $mdy->table('60efbf797b786d8a492bfcee')->get();
       dd($data);
   }
   //实例化服务方式
   public function index1()
   {
        $data = app('mdy')->table('60efbf797b786d8a492bfcee')->get();
        dd($data);
   }
}
  
  • ThinkPHP (>=5.1) 1.2.0开始支持

5.1请手动 use Lany\MingDaoYun\Facade\MingDaoYun; 使用, 6.0以上可以使用下面的方式

修改.env,添加配置

MINGDAOYUN_APP_KEY=xxx
MINGDAOYUN_SIGN=xxx
MINGDAOYUN_HOST=http://xxx.com

示例代码

class Index extends BaseController
{

   public function hello($name = 'ThinkPHP6')
   {
       $data = app('mdy')->table('60efbf797b786d8a492bfcee')->get();
       var_dump($data);
   }
}
  • Other
require __DIR__.'/vendor/autoload.php';

use Lany\MingDaoYun\Facade\MingDaoYun;

$appKey = "APPKEY"; //明道云APPKEY
$sign = "SIGN"; //明道云SIGN
$host = "http://xxx.xxx.com"; //私有部署域名
$mdy = MingDaoYun::init($appKey, $sign, $host);
$data = $mdy->table('worksheetId')->get();

Function

init

设置初始化参数

$mdy = MingDaoYun::init('APPKEY', 'SIGN', '部署域名');

table

设置工作表

$mdy->table('worksheetId');

limit

要获取的数据行数

$mdy->table('worksheetId')->limit(5);

page

设置页码

$mdy->table('worksheetId')->page(5);

fieldMap

获取字段对照关系(明道云工作表结构)

$mdy->table('worksheetId')->fieldMap();

with

要获取关联记录时,设置rowId,controlId

$mdy->table('worksheetId')->with('rowId', 'controlId');

relations

获取关联记录
1.1.1修改为默认获取100条关联记录,relations(true)获取所有关联记录

$mdy->table('worksheetId')->with('rowId', 'controlId')->relations();

sort

设置排序字段,默认为升序

$mdy->table('worksheetId')->sort('field', $bool);

whereOr

设置筛选条件,以or的方式拼接下一个条件,使用whereOr时必须写在where()之前

$mdy->table('worksheetId')->whereOr('field', '=', '123');

where

设置筛选条件,以and的方式拼接下一个条件,目前支持的运算符有contains,notContain,startWith,endWith,=,!=,>,>=,<,<=,RCEq,RCNe

$mdy->table('worksheetId')->where('field', '!=', '123');

whereIn

wehreIn

$mdy->table('worksheetId')->whereIn('field', ['Lany', 'Todd', 'Dom']);

whereNull

字段为空

$mdy->table('worksheetId')->whereNull('field');

whereNotNull

字段为不为空

$mdy->table('worksheetId')->whereNotNull('field');

whereDate

日期是

$mdy->table('worksheetId')->whereDate('field', '2022-02-22');

whereNotDate

日期不是

$mdy->table('worksheetId')->whereNotDate('field', '2022-02-22');

get

获取工作表内容
1.1.0修改为默认最多获取1000条数据,如需获取更多数据请使用limit设置,获取所有数据请使用all

$mdy->table('worksheetId')->limit(1)->page(1)->get();

find

获取单条记录(行记录详情)

$mdy->table('worksheetId')->find('rowId');

view

设置视图ID

$mdy->table('worksheetId')->view('view')->get();

insert

新增单条记录,按明道云新增controls参数格式传入data即可

$data = [
    ['controlId' => 'controlId', 'value' => 'value'],
    ['controlId' => 'controlId', 'value' => 'value'],
];
$mdy->table('worksheetId')->insert($data);

create

批量新增记录,按明道云批量新增rows参数格式传入data即可

$data = [
    [
        ['controlId' => 'controlId', 'value' => 'value'],
        ['controlId' => 'controlId', 'value' => 'value'],
    ],

];
$mdy->table('worksheetId')->create($data);

delete

删除行记录,多条记录以,分隔rowId

$mdy->table('worksheetId')->delete('rowId');

update

更新单行记录

$update = [
    ['controlId' => '60efbf797b786d8a492bfce2', 'value' => '波波波力'],
    ['controlId' => '60efbf797b786d8a492bfce5', 'value' => '波波波力力力力力'],
];
$mdy->table('worksheetId')->update('rowId', $update);

updateRows

批量更新行记录,(目前明道只支持每次更新一个字段)

$rowIds = [
    'rowId1', 'rowId2'
];

$update = [
    'controlId' => 'controlId', 'value' => 'value'
];
$mdy->table('worksheetId')->updateRows($rowIds, $update);

all

获取所有数据
此方法为1.1.0新增

$mdy->table('worksheetId')->all();

count

统计数据行数
此方法为1.1.0新增
keyword默认为空

$mdy->table('worksheetId')->count($keyword);

dateRange

此方法为1.4.0新增

日期区间
支持Today,Tomorrow, Yesterday,ThisWeek,Next7Day, Last14Day等,具体可查看明道云文档 DateRange

$mdy->table('worksheetId')->dateRange('plan_date', 'Next14Day')->get();

notDateRange

此方法为1.4.0新增

不在日期区间 支持Today,Tomorrow, Yesterday,ThisWeek,Next7Day, Last14Day等,具体可查看明道云文档 DateRange

$mdy->table('worksheetId')->notDateRange('plan_date', 'Next14Day')->get();

customize

此方法为1.4.0新增

自定义查询条件,按官方文档的格式传入数组参数

$customize = [
    "controlId" => "62d903e1347b8802573306d3",
    "dataType" => 30,
    "spliceType" => 1,
    "filterType" => 2,
    "value" => "Jinji"
]
$mdy->table('worksheetId')->customize($customize)->get();

workflow

1.4.2 是否触发工作流 默认为true

$mdy->table('worksheetId')->workflow(false);

notGetTotal

1.4.2 是否不统计总行数以提高性能 默认为false

$mdy->table('worksheetId')->notGetTotal(true);

whereBetween

$mdy->table('worksheetId')->whereBetween('fq_time', ['2023-11-01 7:00:00', '2023-12-21 7:00:00']);

whereNotBetween

$mdy->table('worksheetId')->whereNotBetween('fq_time', ['2023-11-01 7:00:00', '2023-12-21 7:00:00']);

同步数据到本地数据库

1.2.0新增

Laravel和ThinkPHP5.1如果不存在数据表会自动创建(ThinkPHP6需先手动创建数据表),以明道云字段别名创建数据字段,如不存在别名则使用明道控件ID创建

  • 修改对应的Model文件
class ProductItem extends Model implements SyncAdapter
{
    //Laravel
    use LaravelAdapter;
    //ThinkPHP
    use ThinkPHPAdapter;
}
  • 调用syncToDB
    $data = app('mdy')->table('60efbf797b786d8a492bfcee')->all();
    \App\Models\ProductItem::syncToDB($data);
    //或者传入MingDaoYun实例
     $data = app('mdy')->table('60efbf797b786d8a492bfcee')->limit(1);
    \App\Models\ProductItem::syncToDB($data);

whereGroup

1.5.0新增

whereGroup($callable, $spliceType), spliceType为and/or,默认为and

$mdy->table('60f631095d106d99c054e0bd')->whereGroup(function(\Lany\MingDaoYun\MingDaoYun $mdy) {
    $mdy->whereOr('user', '=', 'Lany')->where('friend', '=', 'Dom');
})->where('desc', '=', 'test')

License

MIT