mncee/salesforce-sync

用于同步Salesforce对象与本地数据的包

v2.0.0 2024-09-13 13:16 UTC

This package is auto-updated.

Last update: 2024-09-13 13:23:44 UTC


README

此包用于在Laravel应用程序中同步Salesforce对象与本地数据。

支持Laravel 9, 10, 和 11。

使用版本^1.0适用于Laravel 5

安装

您可以通过在Composer中要求mncee/salesforce-sync包来通过Composer安装此包。

composer require mncee/salesforce-sync

Laravel 5

composer require mncee/salesforce-sync:^1.0

Laravel配置

环境变量

.env文件中包含以下环境变量

SALESFORCE_USERNAME=#your salesfore username#
SALESFORCE_PASSWORD=#your salesfore password#
SALESFORCE_TOKEN=#your salesfore token#
SALESFORCE_WSDL=#path to the wsdl stored in the storage/app/ directory#

将您的企业WSDL文件放置到您的应用程序指定的storage/app/目录中。

重要:此包仅支持企业WSDL

包发现

当使用composer要求此包时,应自动发现此包的服务提供者外观别名

但如果您需要手动添加它们,可以按照以下说明操作

Laravel 11

bootstrap/providers.php文件中将CEE\Salesforce\Laravel\SalesforceServiceProvider::class添加到返回的数组中。

// bootstrap/providers.php

return [
    App\Providers\AppServiceProvider::class,
    CEE\Salesforce\Laravel\SalesforceServiceProvider::class,
];

config/app.php文件中,将这些相应的行添加到返回的数组中。

// config/app.php

return [
    
    //...
    
    'aliases' => Facade::defaultAliases()->merge([
        'Salesforce' => \CEE\Salesforce\Laravel\Facades\Salesforce::class,
    ])->toArray(),
]

Laravel 9和10

在您的config/app.php中找到providers键和aliases键,并将这些相应的行添加到返回的数组中。

// config/app.php

return [
    
    //...
    
    'providers' => [
        // ...
        CEE\Salesforce\Laravel\SalesforceServiceProvider::class,
    ],
    
    'aliases' => [
        // ...
        'Salesforce' => \CEE\Salesforce\Laravel\Facades\Salesforce::class,
    ],
    
];

SyncObject类

这是一个用于同步本地数据与远程Salesforce对象的类。

子类使用

继承此类的类可以执行与远程Salesforce对象的同步(推送和拉取)功能。

class Contact extends SyncObject
{
    public $objectName = 'Contact'; // Saleforce Object Name
    ...
}

$salesforceContact = new Contact();
$salesforceContact->push();
$salesforceContact->pull();

函数需要定义推送和拉取Salesforce对象字段,并必须使用以下命名约定

public function push_<Salesforce field name>()
public function pull_<Salesforce field name>($value)

push_...()函数应返回要推送到远程Salesforce对象对应<Salesforce字段名>的值。

    public function push_FirstName() {
        return DB::table('contact')->where('id', 1)->value('first_name');
    }

pull_...($value)函数将包含一个包含远程Salesforce对象对应<Salesforce字段名>的值的参数,该值可以用于更新本地数据。

    public function pull_FirstName($firstName) {
        DB::table('contact')->where('id', 1)->update(['first_name' => $firstName]);
    }

对于给定的Salesforce字段,不需要同时具有push_...()pull_...()函数。根据同步方向的需要,可以使用其中一个或两个。

静态objectName()函数和链式使用

此类还可以通过链式函数单独使用。

SyncObject::objectName('Contact')
	->id('00A10000001aBCde')
	->pushFields(['FirstName' => 'John', 'LastName' => 'Doe'])
	->push();
	
$salesforceContact = SyncObject::objectName('Contact')
	->id('00A10000001aBCde')
	->pullFields(['FirstName', 'LastName'])
	->pull();