# mingdaoyun-php-sdk **Repository Path**: Lany_fight/mingdaoyun-php-sdk ## Basic Information - **Project Name**: mingdaoyun-php-sdk - **Description**: 明道云API PHP-SDK - **Primary Language**: PHP - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 0 - **Created**: 2022-01-06 - **Last Updated**: 2025-09-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README mingdaoyun-PHP-SDK =========== 针对mingdaoyun的API封装的PHP-SDK包 Python 版本:[https://github.com/ghostlitao/mingdaoyun-python-sdk](https://github.com/ghostlitao/mingdaoyun-python-sdk) ## Features - [x] 封装基础API - [x] 固定数据的CRUD - [x] syncToDB 功能 - [ ] 明道云组织架构接口 ## Installing ```shell $ composer require lany/mingdaoyun ``` ## Usage - Laravel (>=5.5) `1.2.0开始支持` 发布配置文件 ```shell $ php artisan vendor:publish --provider="Lany\MingDaoYun\Provider\ServiceProvider" ``` 修改`.env`,添加配置 ```php MINGDAOYUN_APP_KEY=xxx MINGDAOYUN_SIGN=xxx MINGDAOYUN_HOST=http://xxx.com ``` 示例代码 ```php 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`,添加配置 ```php MINGDAOYUN_APP_KEY=xxx MINGDAOYUN_SIGN=xxx MINGDAOYUN_HOST=http://xxx.com ``` 示例代码 ```php class Index extends BaseController { public function hello($name = 'ThinkPHP6') { $data = app('mdy')->table('60efbf797b786d8a492bfcee')->get(); var_dump($data); } } ``` - Other ```php 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](#init) - [table](#table) - [limit](#limit) - [page](#page) - [fieldMap](#fieldMap) - [with](#with) - [sort](#sort) - [whereOr](#whereOr) - [where](#where) - [whereIn](#whereIn) - [whereNull](#whereNull) - [whereNotNull](#whereNotNull) - [whereDate](#whereDate) - [whereNotDate](#whereNotDate) - [get](#get) - [find](#find) - [relations](#relations) - [view](#view) - [insert](#insert) - [create](#create) - [delete](#delete) - [update](#update) - [updateRows](#updateRows) - [all](#all) - [count](#count) - [dateRange](#dateRange) - [notDateRange](#notDateRange) - [customize](#customize) - [同步数据到本地数据库](#同步数据到本地数据库) - [workflow](#workflow) - [notGetTotal](#notGetTotal) ### init > 设置初始化参数 ```php $mdy = MingDaoYun::init('APPKEY', 'SIGN', '部署域名'); ``` ### table > 设置工作表 ```php $mdy->table('worksheetId'); ``` ### limit > 要获取的数据行数 ```php $mdy->table('worksheetId')->limit(5); ``` ### page > 设置页码 ```php $mdy->table('worksheetId')->page(5); ``` ### fieldMap > 获取字段对照关系(明道云工作表结构) ```php $mdy->table('worksheetId')->fieldMap(); ``` ### with > 要获取关联记录时,设置rowId,controlId ```php $mdy->table('worksheetId')->with('rowId', 'controlId'); ``` ### relations > 获取关联记录 >1.1.1修改为默认获取100条关联记录,`relations(true)`获取所有关联记录 ```php $mdy->table('worksheetId')->with('rowId', 'controlId')->relations(); ``` ### sort > 设置排序字段,默认为升序 ```php $mdy->table('worksheetId')->sort('field', $bool); ``` ### whereOr > 设置筛选条件,以or的方式拼接下一个条件,使用whereOr时必须写在where()之前 ```php $mdy->table('worksheetId')->whereOr('field', '=', '123'); ``` ### where > 设置筛选条件,以and的方式拼接下一个条件,目前支持的运算符有`contains`,`notContain`,`startWith`,`endWith`,`=`,`!=`,`>`,`>=`,`<`,`<=`,`RCEq`,`RCNe` ```php $mdy->table('worksheetId')->where('field', '!=', '123'); ``` ### whereIn > wehreIn ```php $mdy->table('worksheetId')->whereIn('field', ['Lany', 'Todd', 'Dom']); ``` ### whereNull > 字段为空 ```php $mdy->table('worksheetId')->whereNull('field'); ``` ### whereNotNull > 字段为不为空 ```php $mdy->table('worksheetId')->whereNotNull('field'); ``` ### whereDate > 日期是 ```php $mdy->table('worksheetId')->whereDate('field', '2022-02-22'); ``` ### whereNotDate > 日期不是 ```php $mdy->table('worksheetId')->whereNotDate('field', '2022-02-22'); ``` ### get > 获取工作表内容 > `1.1.0`修改为默认最多获取1000条数据,如需获取更多数据请使用`limit`设置,获取所有数据请使用`all` ```php $mdy->table('worksheetId')->limit(1)->page(1)->get(); ``` ### find > 获取单条记录(行记录详情) ```php $mdy->table('worksheetId')->find('rowId'); ``` ### view > 设置视图ID ```php $mdy->table('worksheetId')->view('view')->get(); ``` ### insert > 新增单条记录,按明道云新增controls参数格式传入data即可 ```php $data = [ ['controlId' => 'controlId', 'value' => 'value'], ['controlId' => 'controlId', 'value' => 'value'], ]; $mdy->table('worksheetId')->insert($data); ``` ### create > 批量新增记录,按明道云批量新增rows参数格式传入data即可 ```php $data = [ [ ['controlId' => 'controlId', 'value' => 'value'], ['controlId' => 'controlId', 'value' => 'value'], ], ]; $mdy->table('worksheetId')->create($data); ``` ### delete > 删除行记录,多条记录以`,`分隔rowId ```php $mdy->table('worksheetId')->delete('rowId'); ``` ### update > 更新单行记录 ```php $update = [ ['controlId' => '60efbf797b786d8a492bfce2', 'value' => '波波波力'], ['controlId' => '60efbf797b786d8a492bfce5', 'value' => '波波波力力力力力'], ]; $mdy->table('worksheetId')->update('rowId', $update); ``` ### updateRows > 批量更新行记录,(目前明道只支持每次更新一个字段) ```php $rowIds = [ 'rowId1', 'rowId2' ]; $update = [ 'controlId' => 'controlId', 'value' => 'value' ]; $mdy->table('worksheetId')->updateRows($rowIds, $update); ``` ### all > 获取所有数据 > 此方法为`1.1.0新增` ```php $mdy->table('worksheetId')->all(); ``` ### count > 统计数据行数 >此方法为`1.1.0新增` >keyword默认为空 ```php $mdy->table('worksheetId')->count($keyword); ``` ### dateRange此方法为`1.4.0新增` > 日期区间 >支持`Today`,`Tomorrow`, `Yesterday`,`ThisWeek`,`Next7Day`, `Last14Day`等,具体可查看明道云文档 DateRange ```php $mdy->table('worksheetId')->dateRange('plan_date', 'Next14Day')->get(); ``` ### notDateRange此方法为`1.4.0新增` > 不在日期区间 >支持`Today`,`Tomorrow`, `Yesterday`,`ThisWeek`,`Next7Day`, `Last14Day`等,具体可查看明道云文档 DateRange ```php $mdy->table('worksheetId')->notDateRange('plan_date', 'Next14Day')->get(); ``` ### customize此方法为`1.4.0新增` > 自定义查询条件,按官方文档的格式传入数组参数 ```php $customize = [ "controlId" => "62d903e1347b8802573306d3", "dataType" => 30, "spliceType" => 1, "filterType" => 2, "value" => "Jinji" ] $mdy->table('worksheetId')->customize($customize)->get(); ``` ### workflow > `1.4.2` 是否触发工作流 默认为true ```php $mdy->table('worksheetId')->workflow(false); ``` ### notGetTotal > `1.4.2` 是否不统计总行数以提高性能 默认为false ```php $mdy->table('worksheetId')->notGetTotal(true); ``` ### 同步数据到本地数据库 > `1.2.0新增` > > Laravel和ThinkPHP5.1如果不存在数据表会自动创建(ThinkPHP6需先手动创建数据表),以明道云字段别名创建数据字段,如不存在别名则使用明道控件ID创建 - 修改对应的`Model`文件 ```php class ProductItem extends Model implements SyncAdapter { //Laravel use LaravelAdapter; //ThinkPHP use ThinkPHPAdapter; } ``` - 调用`syncToDB` ```php $data = app('mdy')->table('60efbf797b786d8a492bfcee')->all(); \App\Models\ProductItem::syncToDB($data); //或者传入MingDaoYun实例 $data = app('mdy')->table('60efbf797b786d8a492bfcee')->limit(1); \App\Models\ProductItem::syncToDB($data); ``` ## 鸣谢 [JetBrains](https://jb.gg/OpenSourceSupport) 提供优秀的IDE。 ## Contributing You can contribute in one of three ways: 1. File bug reports using the [issue tracker](https://github.com/lany/mingdaoyun/issues). 2. Answer questions or fix bugs on the [issue tracker](https://github.com/lany/mingdaoyun/issues). 3. Contribute new features or update the wiki. _The code contribution process is not very formal. You just need to make sure that you follow the PSR-0, PSR-1, and PSR-2 coding guidelines. Any new code contributions must be accompanied by unit tests where applicable._ ## License MIT