herurahmat/salesforce-bulk-api

用于Salesforce Bulk Api的客户端。轻松操作您的Salesforce数据。

1.1.10 2020-01-24 18:27 UTC

This package is auto-updated.

Last update: 2024-09-22 13:05:37 UTC


README

轻松操作您的Salesforce数据

别担心,保持快乐

Scrutinizer Code Quality Latest Stable Version Maintainability Open Source Love MIT Licence Build Status Codacy Badge

功能

  • INSERT任务
  • UPDATE任务
  • UPSERT任务
  • DELETE任务
  • QUERY (SELECT)任务

例如,查看测试

安装

使用以下命令安装最新版本

$ composer require shubinmi/salesforce-bulk-api

基本用法

<?php

use SalesforceBulkApi\dto\CreateJobDto;
use SalesforceBulkApi\objects\SFBatchErrors;
use SalesforceBulkApi\conf\LoginParams;
use SalesforceBulkApi\services\JobSFApiService;

// Set up API Client
$params = (new LoginParams)
    ->setUserName('mySFLogin')
    ->setUserPass('MySFPass')
    ->setUserSecretToken('mySecretTokenFomSF');

// Set up Insert SF job
$jobRequest = (new CreateJobDto)
    ->setObject('My_User__c')
    ->setOperation(CreateJobDto::OPERATION_INSERT);

// Data for Insert to custom SF entity
$data1 = [
    [
        'Email__c' => 'new@user.net',
        'First_Name__c' => 'New Net'
    ],
    [
        'Email__c' => 'new@user.org',
        'First_Name__c' => 'New Org'
    ]
];
$data2 = [
    [
        'Email__c' => 'new1@user.net',
        'First_Name__c' => 'New1 Net'
    ],
    [
        'Email__c' => 'new1@user.org',
        'First_Name__c' => 'New1 Org'
    ]
];

// Init Insert job and pull data
$insertJob = (new JobSFApiService($params))
    ->initJob($jobRequest)
    ->addBatchToJob($data1)
    ->addBatchToJob($data2)
    ->closeJob();

// Set up params for Upsert SF job
$jobRequest
    ->setOperation(CreateJobDto::OPERATION_UPSERT)
    ->setExternalIdFieldName('Email__c');

// Do Upsert job
$upsertJob = new JobSFApiService($params);
$upsertJob->initJob($jobRequest);

$data = [
    [
        'Email__c' => 'new@user.net',
        'First_Name__c' => 'Not new Net'
    ],
    [
        'Email__c' => 'new@user.com',
        'First_Name__c' => 'New Com'
    ]
];
$upsertJob
    ->addBatchToJob($data)
    ->closeJob();

// Collect jobs errors
$errorsOnInsert = $insertJob->waitingForComplete()->getErrors();
$errorsOnUpsert = $upsertJob->waitingForComplete()->getErrors();

// Operate with errors
foreach ($errorsOnInsert as $error) {
    /** @var SFBatchErrors $error */
    $errorsBatch         = $error->getBatchInfo();
    $errorsMsg           = $error->getErrorMessages();
    $errorsElementNumber = $error->getErrorNumbers();
    if (empty($errorsElementNumber)) {
        echo 'Batch ' . $errorsBatch->getId() . ' return ' . $errorsBatch->getState() . PHP_EOL;
    } else {
        echo 'Batch ' . $errorsBatch->getId() . ' fail for next rows:' . PHP_EOL;
        foreach ($errorsElementNumber as $errorMsgKey => $errorRowNumber) {
            echo 'Row number = ' . $errorRowNumber 
                . ' Error message = ' . $errorsMsg[$errorMsgKey] . PHP_EOL;
        }
    }
}

安全贡献

$ sh ./vendor/phpunit/phpunit/phpunit ./tests/services