php-arsenal/salesforce-mapper-bundle

Symfony 扩展包,用于将 Salesforce 原始对象映射到您的模型。

安装量: 3,621

依赖项: 2

建议者: 0

安全性: 0

星标: 1

关注者: 0

分支: 27

类型:symfony-bundle


README

Release CI Packagist

简介

该 Symfony 扩展包可以帮助您有效地将 Salesforce 对象检索并映射到您自己的模型,以便稍后与 Doctrine 或独立使用。

安装

composer require php-arsenal/salesforce-mapper-bundle

功能

  • 轻松从 Salesforce 获取记录,并将这些记录保存回 Salesforce:保存时自动忽略只读字段。
  • 根据 Doctrine 中的标准进行查询。
  • 一次性获取相关记录,从而节省 API 调用
  • 调整映射以精确检索和保存记录。
  • MappedBulkSaver 通过使用映射对象的批量创建、删除、更新和合并来帮助您保持在 Salesforce API 限制内。
  • 完全单元测试(仍在进行中)。

使用方法

安装完成后,该扩展包提供了一些服务,这些服务已自动注入以供依赖注入使用

  • a mapper: PhpArsenal\SalesforceMapperBundle\Mapper
  • a bulk saver: PhpArsenal\SalesforceMapperBundle\MappedBulkSaver

获取筛选后的记录

使用 mapper 从 Salesforce 获取记录。示例

<?php

use PhpArsenal\SalesforceMapperBundle\Mapper;
use PhpArsenal\SalesforceMapperBundle\Model\Opportunity;

class MyService {
    private $mapper;
    
    public function __construct(Mapper $mapper) {
      $fetchedObjects = $mapper->findBy(new Opportunity(), [
          'Name'  => 'Just an opportunity',
      ]);
    }
}

您甚至可以通过关联对象获取相关记录

...
$opportunity = $fetchedObjects[0];
echo 'The opportunity belongs to: ' . $opportunity->getAccount()->getName();
...

获取所有记录

...
$fetchedObjects = $mapper->findAll(Opportunity::class);
...

保存记录

如果您创建了一个新记录并将其保存,则 Salesforce 分配给它的 ID 可通过 getId() 访问。

...
$opportunity = new Opportunity();
$opportunity->setName('Some name');
echo $opportunity->getId(); // Returns null

$mapper->save($account);
echo $account->getId(); // Returns the new ID, e.g. `001D000000h0Jod`
...

PhpArsenal\SalesforceMapperBundle\MappedBulkSaver 可以用于批量保存多个对象。

自定义对象和属性

Model 文件夹中,您将找到几个标准 Salesforce 对象。由于这是一个通用客户端扩展包,因此该目录不包含自定义对象,目录中的对象也没有自定义属性。

如果您想添加自定义对象或属性,请从 AbstractModel 或提供的模型扩展。

映射器知道如何通过读取属性上方的注解来映射字段

...
use PhpArsenal\SalesforceMapperBundle\Annotation as Salesforce;
...
    /**
     * @var string
     * @Salesforce\Field(name="AccountId")
     */
    protected $accountId;
...