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