2月
03
2011
SalesforceのデータにアクセスするためのPHP5ライブラリ「sRecord」の使い方(8)
投稿者: miztaka, カテゴリ: PHP, Salesforce, sRecord, tags: force.com, php, salesforce, srecord概要
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 }