概要

sRecordは seasar2の S2JDBC, それをまねて作った拙作teeple2のActiveRecordと似たような使い方でSalesforceのデータを取り扱うことができるPHP5ライブラリです。google codeにオープンソースとして公開していますので是非ご利用ください。
http://code.google.com/p/srecord4p/

SalesforceのAPIでは複数のレコードをまとめて処理することが可能です。これにより通信オーバヘッドを軽減することができます。
Srecord_ActiveRecord#create()が単一レコードの作成だったのに対して、Srecord_Schema::createAll()を使うことで複数レコードを一度に作成できます。

createAll

Srecord_Schema::createAll()は Srecordオブジェクトの配列を引数に取り、それらのデータにしたがって全てのレコードをSalesforceに登録します。各レコードの結果は、各オブジェクトのgetState()メソッドで確認することができます。


$a1 = new Sobject_Account();
$a1->Name = 'Scott';

$a2 = new Sobject_Account();
$a2->Name = 'Tigger';

Srecord_Schema::createAll(array($a1,$a2));

if ($a1->getState() === Srecord_ActiveRecord::STATE_SUCCESS) {
    // success
} else {
    // false
    print_r($a1->getErrors());
}


updateAll, upsertAll, deleteAll, undeleteAll も同様です。

updateAll


$records = Srecord_Account::neu()->eq('Type', 'Prospect')->select();
foreach ($records as $record) {
    $record->Type = 'Other';
}
$successAll = Srecord_Schema::updateAll($records);
if (! $successAll) {
    // handle error
}


upsertAll


$records = array();
for ($i=0; $i<count($_POST['extid']); $i++) {
    $extid = $_POST['extid'][$i];
    $name = $_POST['name'][$i];
    $account = new Sobject_Account();
    $account->extid__c = $extid;
    $account->Name = $name;
    $records[] = $account;
}

$successAll = Srecord_Schema::upsertAll('extid__c', $records);
if (! $successAll) {
    // handle error
}


deleteAll


$records = Srecord_Account::neu()->eq('Type', 'Prospect')->select();
$successAll = Srecord_Schema::deleteAll($records);
if (! $successAll) {
    // handle error
}


undeleteAll



$records = Srecord_Account::neu()->eq('Type', 'Prospect')->select();
$successAll = Srecord_Schema::undeleteAll($records);
if (! $successAll) {
    // handle error
}


コメントは受け付けていません。