toyokumo/kintone-query-builder
kintone 查询构建器
v1.1.6
2022-07-11 00:10 UTC
Requires
- php: ^7.2|^8.0
Requires (Dev)
- phpunit/phpunit: ^8.0
This package is auto-updated.
Last update: 2024-09-11 11:25:21 UTC
README
PHP中用于Kintone REST API的查询构建器。Kintone查询构建器可以帮助您构建GET /records.json
的参数字符串query
。
使用方法
安装
composer require toyokumo/kintone-query-builder
基本
<?php use KintoneQueryBuilder\KintoneQueryBuilder; use KintoneQueryBuilder\KintoneQueryExpr; // example // all operators(=, !=, like, not like, <, >, <=, >=, in, not in) are supported (new KintoneQueryBuilder())->where('name', '=', 'hoge')->build(); // => 'name = "hoge"' (new KintoneQueryBuilder()) ->where('favorite', 'in', ['apple', 'banana', 'orange']) ->build(); // => 'favorite in ("apple","banana","orange")' (new KintoneQueryBuilder()) ->where('age', '>', 10) ->andWhere('name', 'like', 'banana') // you can write 'where' instead here (where = andWhere). ->andWhere('name', '!=', 'banana') ->build(); // => 'age > 10 and name like "banana" and name != "banana"' (new KintoneQueryBuilder()) ->where('age', '>', 20) ->orderBy('$id', 'desc') ->limit(50) ->build(); // => 'age > 20 order by $id desc limit 50' (new KintoneQueryBuilder()) // for nested query, pass KintoneQueryExpr to $builder->where. ->where( (new KintoneQueryExpr()) ->where('a', '<', 1) ->andWhere('b', '<', 1) )->orWhere( (new KintoneQueryExpr()) ->where('c', '<', 1) ->andWhere('d', '<', 1) )->build(); // => '(a < 1 and b < 1) or (c < 1 and d < 1)' (new KintoneQueryBuilder())->where('x', '=','ho"ge')->build() // escape double quote // => 'x = "ho\"ge"'
示例:从kintone API获取所有记录
由于kintone API的限制,您无法获取超过501条记录。在这种情况下,kintone查询构建器非常有用。
<?php use KintoneQueryBuilder\KintoneQueryBuilder; $builder = (new KintoneQueryBuilder())->where(...); $records = $api->fetch($builder.build()); $offset = 0; $records_max = 500; // max records you can get at once (kintone API restriction) while(!\empty($records)) { // do something $offset+=$records_max; $records = $api->fetch($builder->offset($offset)->build()); }
注意事项:方法是可变方法
请注意,$builder->where(...)
修改$builder
并返回自身,而不是返回一个新的复制构建器对象。这可能会导致意外的行为,如下所示。
<?php $builder = (new KintoneQueryBuilder()); $q0 = $builder->where('x', '=', 1)->build(); // $q0 = 'x = 1' $q1 = $builder->where('y', '=', 1)->bulid(); // $q1 = 'x = 1 and y = 1', not 'y = 1'
如果您想使$builder
返回'y=1'
,您应该定义一个工厂函数(或工厂类)。
<?php function getBaseBuilder() { return (new KintoneQueryBuilder())->where('x', '=', 1); } $q0 = getBaseBuilder()->build(); $q1 = getBaseBuilder()->where('y', '=', 1)->build(); $q2 = getBaseBuilder()->bulid(); // you can get 'x = 1' again
如果您想再次使用相同的构建器构建稍微不同的查询,这种模式非常有用。
更多示例.
如何贡献
请随意发送给我们拉取请求。
设置
git clone git@github.com:cstap/kintone-query-builder.git
composer install
composer test
格式
安装prettier并运行composer format
。