bizly/airtable-php

Airtable API的PHP包装器

2.4.7 2022-09-15 13:29 UTC

This package is auto-updated.

Last update: 2024-09-15 18:05:10 UTC


README

Airtable API的PHP客户端。欢迎评论、请求或错误报告。

查看示例

开始使用

请注意,Airtable不允许通过其公共API进行模式操作,您必须使用其界面创建表。

在Airtable界面中创建基础后,打开API文档以获取您的Base ID。

API Doc Airtable

Base ID是一个以'app'开头,后跟字母和数字混合的代码(appsvqGDFCwLC3I10)。

安装

如果您使用Composer,可以运行以下命令

composer require sleiman/airtable-php

您也可以直接下载并将其解压缩到您的Web目录中。

将包装器添加到项目中

如果您使用Composer,运行自动加载器

require 'vendor/autoload.php';

或包含Airtable.php文件

include('../src/Airtable.php');
include('../src/Request.php');
include('../src/Response.php');

初始化类

use \TANIOS\Airtable\Airtable;
$airtable = new Airtable(array(
    'api_key' => 'API_KEY',
    'base'    => 'BASE_ID'
));

获取表中的所有条目

我们从“联系人”表获取所有条目。

$request = $airtable->getContent( 'Contacts' );

do {
    $response = $request->getResponse();
    var_dump( $response[ 'records' ] );
}
while( $request = $response->next() );

print_r($request);

使用参数进行筛选、排序等

// You don't have to use all the params, they are added as a reference
$params = array(
    "filterByFormula" => "AND( Status = 'New' )",
    "sort" => array(array('field' => 'Count', 'direction' => "desc")),
    "maxRecords" => 175,
    "pageSize" => 50,
    "view" => "Name of your View"
);

$request = $airtable->getContent( 'Contacts', $params);

do {
    $response = $request->getResponse();
    var_dump( $response[ 'records' ] );
}
while( $request = $response->next() );

print_r($request);

创建新条目

我们将创建联系人表中的新条目

// Create an array with all the fields you want 
$new_contact_details = array(
    'Name'        =>"Contact Name",
    'Address'     => "1234 Street Name, City, State, Zip, Country",
    'Telephone #' => '123-532-1239',
    'Email'       =>'email@domain.com',
);

// Save to Airtable
$new_contact = $airtable->saveContent( "Contacts", $new_contact_details );

// The ID of the new entry
echo $new_contact->id;

print_r($new_contact);

现在可用批量创建,文档见下方

更新联系人

使用条目ID更新条目

$update_contact_details = array(
	'Telephone #' => '514-123-2942',
);
$update_contact = $airtable->updateContent("Contacts/{entry-id}",$update_contact_details);
print_r($update_contact);

现在可用批量更新,文档见下方

扩展关系(贪婪加载)

响应将包括来自另一个表关联的所有记录信息。在此示例中,通过单个调用,将填充“客户详情”字段的“客户详情”表关系。

如果您没有传递关联数组,我们假设字段和表名相同。

$expended = $airtable->getContent( "Customers/recpJGOaJYB4G36PU", false, [
    'Customer Details'
] );

如果出于某种原因字段名称与表名不同,您可以通过传递关联数组来实现。

$expended = $airtable->getContent( "Customers/recpJGOaJYB4G36PU", false, [
    'Field Name' 	        => 'Table Name',
    'Customer Meetings'  => 'Meetings'
] );

我们听说您喜欢扩展关系,因此现在您可以扩展您的扩展关系。以下是可以实现的内容。

$expend_expended = $airtable->getContent( "Customers/recpJGOaJYB4G36PU", false, [
    'Customer Details',
    'Meetings'      => [
        'table'     => 'Meetings',
        'relations' => [
            'Calendar'  => 'Calendar',
            'Door'      => [
                'table'         => 'Doors',
                'relations'     => [
                    'Added By'  => 'Employees'
                ]
            ]
        ]
    ]
] );

但请注意,加载过多的关系可能会显着增加响应时间。

删除条目

使用条目ID删除条目

$delete_contact = $airtable->deleteContent("Contacts/{entry-id}");

现在可用批量删除,文档见下方

快速检查(新功能)

一行查找记录或多个记录。当您想知道用户是否已经注册或是否使用了相同的SKU时很有用。响应将返回“计数”和“记录”。

$check = $airtable->quickCheck("Contacts",$field,$value);

$check = $airtable->quickCheck("Contacts","Email","jon@wordlco.com");
if($check->count > 0){
    // the value is already there
    var_dump($check->records);
} else {
    // it's not there
}

批量创建、更新、删除

Airtable API现在允许每个API请求创建、更新和删除10条记录。

创建

$content = $a->saveContent( 'Links', [
    [
        'fields'            => [
            'Name'          => 'Tasty'
        ]
    ],
    [
        'fields'            => [
            'Name'          => 'Yolo'
        ]
    ]
] );

更新

$update = [];

foreach ( $content->records as $record )
{
    $update[] = [
        'id'            => $record->id,
        'fields'        => [
            'Slug'      => strtolower( $record->fields->Name )
        ]
    ];
}

$response = $a->updateContent( 'Links', $update );

删除

$delete = [];

foreach ( $response->records as $record )
{
    $delete[] = $record->id;
}

$response = $a->deleteContent( 'Links', $delete );

致谢

版权(c)2019 - 由Sleiman Tanios & Guillaume Laliberté编写