親子リレーションの識別
親子リレーションを識別するには、エンティティリレーションダイアグラム (ERD) を確認するか、組織のエンタープライズ WSDL を調べます。
www.salesforce.com/us/developer/docs/object_reference/index.htm にある『Salesforce Object Reference』の「Data Model」セクションの ERD ダイアグラムを確認することによって、親子リレーションを識別できます。ただし、すべての親子リレーションが SOQL 内に表示されるわけではないため、念のため適切な記述用の API コールを発行することによって親子リレーション内でクエリを行うこともできます。結果は、親子リレーション情報を含みます。
組織について Enterprise WSDL を調べることもできます。
- 子リレーション名を見つけるために、子オブジェクトの複数形を含み、type="tns:QueryResult" で終わる項目を探してください。Account の例を次に示します。
1<complexType name="Account"> 2 3 <complexContent> 4 5 <extension base="ens:sObject"> 6 7 <sequence> 8 9 ... 10 11 <element name="Contacts" nillable="true" minOccurs="0" 12 13 type="tns:QueryResult"/> 14 15 ... 16 17 </sequence> 18 19 </extension> 20 21 </complexContent> 22 23 </complexType>上記の例では、子リレーション名 Contacts は、親の Account のエントリに含まれています。
- オブジェクトの親の場合は、AccountId と Account などのエントリのペアを探します。この場合、ID 項目はその ID によって参照される親オブジェクトを表し、Account 項目はレコードのコンテンツを表します。親エントリには、非プリミティブ型 type="ens:Account" があります。
1<complexType name="Opportunity"> 2 3 <complexContent> 4 5 <extension base="ens:sObject"> 6 7 <sequence> 8 9 ... 10 11 <element name="Account" nillable="true" minOccurs="0" 12 13 type="ens:Account"/> 14 15 <element name="AccountId" nillable="true" minOccurs="0" 16 17 type="tns:ID"/> 18 19 ... 20 21 </sequence> 22 23 </extension> 24 25 </complexContent> 26 27 </complexType> - カスタムオブジェクトの場合は、リレーションのサフィックス __r が使用されているエントリのペアを探します。
1<complextType name="Mother__c"> 2 3 <complextcontent> 4 5 <extension base="ens:sObject"> 6 7 <sequence> 8 9 ... 10 11 <element name="Daughters__r" nillable="true" minOccurs="0" 12 13 type="tns:QueryResult"/> 14 15 <element name="FirstName__c" nillable="true" minOccurs="0" 16 17 type="xsd:string"/> 18 19 <element name="LastName__c" nillable="true" minOccurs="0" 20 21 type="xsd:string"/> 22 23 ... 24 25 </sequence> 26 27 </extension> 28 29 </complexContent> 30 31 </complextType>1<complextType name="Daughter__c"> 2 3 <complextcontent> 4 5 <extension base="ens:sObject"> 6 7 <sequence> 8 9 ... 10 11 <element name="Mother_of_Child__c" nillable="true" minOccurs="0" 12 13 type="tns:ID"/> 14 15 <element name="Mother_of_Child__r" nillable="true" minOccurs="0" 16 17 type="xsd:string"/> 18 19 <element name="LastName__c" nillable="true" minOccurs="0" 20 21 type="ens:Mother__c"/> 22 23 ... 24 25 </sequence> 26 27 </extension> 28 29 </complexContent> 30 31 </complextType>