stratease / salesforcery
一个受 Eloquent API 启发的 PHP Salesforce ORM。
0.3.2
2019-10-31 23:14 UTC
Requires
- php: >=5.6
- guzzlehttp/guzzle: ^6.3
Requires (Dev)
- phpunit/phpunit: ^5.0
README
一个用于 Salesforce 客户端应用的 PHP ORM,使用 OAuth2 REST 客户端。受 Eloquent 简单 API 的启发。
设置
1. 创建连接应用
您需要创建一个 连接应用 以生成 OAuth2 连接的 client_id
和 client_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
次架构。因此,如果您执行一系列使用Account
和User
模型的请求,它将请求架构两次,每次为一个模型。 - 查询构建器对象
- 正式研究扩展 Eloquent。
- 在其他 PHP 版本上进行测试。在
7.1
上开发。 - 测试 Docker 环境。目前,测试需要连接到一个沙盒环境。目前首选设置是为了验证各种 Salesforce REST 协议是否有效。
- 目前仅支持 OAuth2
password
授权类型。接受其他授权协议的 pull 请求。