SalesforceのデータにアクセスするためのPHP5ライブラリ「sRecord」の使い方(2)
投稿者: 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/
今日はクエリーについて説明します。
メソッドチェーン
sRecordを使うとメソッドチェーンでSOQL(Salesforce Object Query Language)を組み立てて実行することができます。
例えば以下のSOQLを実行したい場合、
SELECT Account.Name, FROM Account WHERE Name LIKE '%G%' AND Owner.Username = 'sato'
sRecordでは以下のように書くことができます。
$records = Sobject_Account::neu()
->contains('Name', 'G')
->eq('Owner.Username', 'sato')
->select('Name');
sRecordのメソッドとSOQLの対応表
sRecordのメソッドとSOQLの表現の対応は以下の通りです。
| function | SOQL | sRecord method |
| Equals | name = ‘foo’ | eq(‘name’, ‘foo’) |
| Not equals | name != ‘foo’ | ne(‘name’, ‘foo’) |
| Less than | age < '10' | lt(‘age’, 10) |
| Less equal | age <= '10' | le(‘age’, 10) |
| Greater than | age > ’10’ | gt(‘age’, 10) |
| Greater equal | age >= ’10’ | ge(‘age’, 10) |
| Like | name like ‘%foo%’ | contains(‘name’,’foo’) |
| name like ‘foo%’ | starts(‘name’,’foo’) | |
| name like ‘%foo’ | ends(‘name’,’foo’) | |
| name like ‘%appl_%’ | where(“name like ‘%appl_%'”) | |
| includes, excludes | MSP1__c includes (‘AAA;BBB’, ‘CCC’) | includes(‘MSP1__c’, ‘AAA;BBB’, ‘CCC’) or includes(‘MSP1__c’, array(‘AAA;BBB’,’CCC’)) |
| Boolean | BooleanField = TRUE | eq(‘BooleanField’, TRUE) |
| BooleanField = FALSE | eq(‘BooleanField’, FALSE) | |
| Null | SomeField = null | eq(‘SomeField’, null) |
| SomeField != null | ne(‘SomeField’, null) | |
| In | age in (’10’,’20’,’30’) | in(‘age’, ’10’,’20’,’30’) or in(‘age’,array(’10’,’20’,’30) |
| Order | ORDER BY name, age | order(‘name, age’) |
| Limit | LIMIT 10 | limit(10) |
| Offset | OFFSET 10 | offset(10) |
SELECTするカラムの指定
SELECTするカラムを指定したい場合はselect()の引数にカンマ区切りで指定してください。
パラメータがない場合はすべてのカラムがSELECTされます。
$records = Sobject_Account::neu()
->contains('Name', 'G')
->eq('Owner.Username', 'sato')
->select('Id, Name');
クエリ結果の取得
select()メソッドの戻り値は該当するSobjectの配列となります。(上記の例ではSobject_Accountの配列)
1レコード(オブジェクト)を取得したい場合は
find()メソッドを使います。find()メソッドはクエリー結果が複数行の場合はExceptionを投げます。クエリー結果が0行の場合はNULLを返します。
find()メソッドでは第一引数にレコードのIDを指定することができます。第二引数はSELECTするカラムです。(どちらもNULL可)
// example for specifing Id
$account = Sobject_Account::neu()->find('xxxxxxxxxxxxxxxx'); // xxxxx is Id of Salesforce SObject.

エントリ (RSS)