stratease/salesforcery

一个受 Eloquent API 启发的 PHP Salesforce ORM。

0.3.2 2019-10-31 23:14 UTC

This package is auto-updated.

Last update: 2024-09-29 04:43:15 UTC


README

Latest Stable Version Total Downloads License

一个用于 Salesforce 客户端应用的 PHP ORM,使用 OAuth2 REST 客户端。受 Eloquent 简单 API 的启发。

设置

1. 创建连接应用

您需要创建一个 连接应用 以生成 OAuth2 连接的 client_idclient_secret 值。创建后,使用凭据注册连接。

2. 安装

composer require stratease/salesforcery

3. 连接

use Stratease\Salesforcery\Salesforce\Connection\REST\Authentication\PasswordAuthentication;
use Stratease\Salesforcery\Salesforce\Connection\REST\Client;
use Stratease\Salesforcery\Salesforce\Database\Model;


$authentication = new PasswordAuthentication([
     'grant_type' => 'password',
     'client_id' => 'your app ID',
     'client_secret' => 'your app secret',
     'username' => 'salesforce@user.com',
     'password' => 'password+token',
     'authorization_url' => 'https://test.salesforce.com/'
 ]);

// Typically https://login.salesforce.com, for testing use https://test.salesforce.com 
$authentication->setEndpoint('https://test.salesforce.com/');

$client = new Client($authentication);
$response = $client->query("SELECT Id FROM Account LIMIT 1");

// Should output a response with a 'records' key that conains an array of results.
print_r($response); 

// Register your connection so the ORM can connect
Model::registerConnection($client);

// Your model to connect to the Salesforce Account object
$account = Your/Models/Account::findOneBy('Id', 'abc123');
     

示例

定义模型

对于简单的设置...

use Stratease\Salesforcery\Salesforce\Database\Model;

class Account extends Model
{
    // Account maps to Account in Salesforce, nothing else required.
}

更高级的使用...

use Stratease\Salesforcery\Salesforce\Database\Model;

class Product extends Model
{
    public static $resourceName = 'Product2';
}
  • 扩展 Stratease\Salesforcery\Salesforce\Database\Model 并设置完成!基本上...
  • 默认情况下,模型的 Salesforce 对象名称通过 {ClassName} -> {ObjectName} 进行映射。您可以通过定义 resourceName 属性来覆盖。
  • 允许显式字段定义,并提供覆盖选项。 get{Field}()
  • 将使用 SchemaInspector 来发现此资源的字段,并自动使用字段填充实例。

查询对象

// Account is returned
$account = Account::findOneBy('Name', 'Acme Corp');
// An iterable Collection is returned
$accountCollection = Account::findBy(['OwnerId' => '123', 'Status' => 'Active']); // performs an AND expression on the associative array
foreach($accountCollection as $account) {
    echo "\n".$account->Name;
}

修改对象

// create
$account = new Account();
$account->Name = 'Acme Uber Corp';
$account->save(); 

// update
$account2 = Account::findOneBy('Name', 'Acme Uber Corp');
$account2->Name = 'Acme Uber Inc.';
$account2->save(); 

// delete
$account2->delete();

Salesforce

此库使用 Salesforce 的 REST API。在版本 39 上进行过测试。

待办事项

  • 对象关系映射,例如 $contact->phone->isMobile
  • 添加更多 REST 端点支持
  • 批处理 REST 集成
  • 对象 -> 字段架构缓存。目前,它将在每次运行中请求 n * Models 次架构。因此,如果您执行一系列使用 AccountUser 模型的请求,它将请求架构两次,每次为一个模型。
  • 查询构建器对象
  • 正式研究扩展 Eloquent。
  • 在其他 PHP 版本上进行测试。在 7.1 上开发。
  • 测试 Docker 环境。目前,测试需要连接到一个沙盒环境。目前首选设置是为了验证各种 Salesforce REST 协议是否有效。
  • 目前仅支持 OAuth2 password 授权类型。接受其他授权协议的 pull 请求。