mncee / salesforce-sync
用于同步Salesforce对象与本地数据的包
Requires
- ext-soap: *
- laravel/framework: ^9.0|^10.0|^11.0
README
此包用于在Laravel应用程序中同步Salesforce对象与本地数据。
支持Laravel 9, 10, 和 11。
安装
您可以通过在Composer中要求mncee/salesforce-sync
包来通过Composer安装此包。
composer require mncee/salesforce-sync
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();