tapp / laravel-airtable
Laravel Airtable SDK
v2.3
2024-03-14 10:27 UTC
Requires
- php: ^7.4 || ^8.0 || ^8.1 || ^8.2 || ^8.3
- guzzlehttp/guzzle: ~6.0 || ~7.0
- illuminate/support: 5.7.* || 5.8.* ||^6.0 || ^7.0 || ^8.0 || ^9.0 || ^10.0 || ^11.0
- symfony/dotenv: ^4.2 || ^5.1 || ^7.0
Requires (Dev)
- mockery/mockery: ^1.4
- orchestra/testbench: ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.0
- phpstan/extension-installer: ^1.1
- phpstan/phpstan-deprecation-rules: ^1.0
- phpstan/phpstan-phpunit: ^1.0
- phpunit/phpunit: ^8.4 || ^9.3.3 || ^10.0
README
与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 包模板生成的。