toyokumo/kintone-query-builder

kintone 查询构建器

v1.1.6 2022-07-11 00:10 UTC

This package is auto-updated.

Last update: 2024-09-11 11:25:21 UTC


README

Build and Test

PHP Version Latest Stable Version Latest Unstable Version License

日语的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

许可证

MIT