tapp/laravel-airtable

Laravel Airtable SDK

v2.3 2024-03-14 10:27 UTC

This package is auto-updated.

Last update: 2024-09-04 21:58:47 UTC


README

Latest Stable Version Code Style Action Status - Pint PHPStan Tests Quality Score Total Downloads

与Airtable交互的简单方法。

安装

您可以通过composer安装此包

composer require tapp/laravel-airtable

发布配置文件

php artisan vendor:publish --provider="Tapp\Airtable\AirtableServiceProvider"

在.env中定义airtables账户信息

AIRTABLE_KEY=
AIRTABLE_BASE=
AIRTABLE_TABLE=
AIRTABLE_TYPECAST=false 
  • AIRTABLE_KEY Airtable从2024年开始需要个人访问令牌进行授权。令牌可以在此处创建。如果您从API密钥升级到访问令牌,只需将此环境变量中之前保存的值替换为您的新的令牌。
  • AIRTABLE_BASE 可以在这里找到:https://airtable.com/api,选择基础然后从URL复制:https://airtable.com/[Base Is Here]/api/docs#curl/introduction
  • AIRTABLE_TABLE 可以在适当的基础的文档中找到,这不区分大小写。例如:tasks
  • AIRTABLE_TYPECAST 将此设置为true以允许自动转换。

示例配置

如果您需要支持多个表,请将它们添加到config/airtable.php中的tables配置中。如果您的表在不同的基础上,也请添加它。

...
    'tables' => [

        'default' => [
            'name' => env('AIRTABLE_TABLE', 'Main'),
            'base' => 'base_id',
        ],

        'companies' => [
            'name' => env('AIRTABLE_COMPANY_TABLE', 'Companies'),
            'base' => 'base_id',
        ],
        ...
    ],
...

用法

在您的类中导入外观。

use Airtable;

从该表中获取记录

  • 这将仅返回前100条记录,因为Airtable页面大小有限制
Airtable::table('tasks')->get();

从该表中获取所有记录。

  • 这将通过发送多个请求直到获取所有记录为止来获取所有记录。
  • 可选参数,即请求之间的延迟(微秒),因为API限制为每个基础每秒最多5个请求,默认为0.2秒。
Airtable::table('tasks')->all();
Airtable::table('tasks')->all(500000); // 0.5 seconds

从默认表中获取一条记录。

Airtable::find('id_string');

过滤记录

  • 第一个参数是列名
  • 第二个参数是运算符或您想使用等号 '=' 作为运算符时的值。
  • 第三个参数是过滤器的值
Airtable::where('id', '5')->get();
Airtable::where('id', '>', '5')->get();

通过公式过滤记录

  • 当使用 where 不够时,您可能需要传递原始过滤器值。
  • Airtable参考
Airtable::table('tasks')->filterByFormula('OR({id} = "abc", {id} = "def", {id} = "ghi")')->get();

排序记录

  • 第一个参数是列名
  • 第二个参数是排序方向: asc(默认)或 desc
Airtable::orderBy('id')->get();
Airtable::orderBy('created_at', 'desc')->get();

您可以通过多次调用 orderBy 来对多个字段进行排序(不支持单个调用使用数组语法)

Airtable::orderBy('id')->orderBy('created_at', 'desc')->get();

设置其他API参数

Airtable::addParam('returnFieldsByFieldId', true); // one param at a time
Airtable::params(['returnFieldsByFieldId' => true, 'view' => 'My View']) // multiple params at once

创建

  • 插入记录
Airtable::create(['name' => 'myName']);

第一个或创建

  • 第一个参数将用于查找现有内容
  • 第二个参数是当未找到结果并且创建时需要保存的附加数据(如果项目已存在,则不会保存此数据)
Airtable::firstOrCreate(['name' => 'myName'], ['field' => 'myField']);

更新或创建

  • 第一个参数将用于查找现有内容
  • 第二个参数是我们创建或更新时要保存的附加数据
Airtable::updateOrCreate(['name' => 'myName'], ['field' => 'myField']);

Airtable::table('companies')->firstOrCreate(['Company Name' => $team->name]);

更新

  • 第一个参数将是id
  • 第二个参数是包括更新的字段的整个记录

注意: 更新是破坏性的,如果未提供值,则清除所有未指定的单元格值。请使用PATCH仅更新指定的字段

Airtable::table('companies')->update('rec5N7fr8GhDtdNxx', [ 'name' => 'Google', 'country' => 'US']);

修补

  • 第一个参数将是id
  • 第二个参数是您希望更新的字段
Airtable::table('companies')->patch('rec5N7fr8GhDtdNxx', ['country' => 'US']);

批量更新或修补

  • 要更新或修补的数据数组
Airtable::table('companies')->patch([
    [
        'id' => 'rec5N7fr8GhDtdNxx',
        'fields' => ['country' => 'US']
    ],
    [
        'id' => 'rec8BhDt4fs2',
        'fields' => ['country' => 'UK']
    ],
    ...
]);

销毁

  • 销毁记录
Airtable::table('companies')->destroy('rec5N7fr8GhDtdNxx');

测试

composer test

变更日志

请参阅变更日志以获取更多关于最近变更的信息。

贡献

请参阅贡献指南以获取详细信息。

安全性

如果您发现任何安全问题,请通过电子邮件steve@tappnetwork.com联系,而不是使用问题跟踪器。

致谢

许可

MIT 许可证(MIT)。请参阅许可文件以获取更多信息。

Laravel 包模板

此包是使用Laravel 包模板生成的。