この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

親子リレーションの識別

親子リレーションを識別するには、エンティティリレーションダイアグラム (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 のエントリに含まれています。

  • オブジェクトの親の場合は、AccountIdAccount などのエントリのペアを探します。この場合、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>

    すべてのリレーションが API で公開されるわけではありません。リレーションを識別する最も確実な方法は、describeSObjects() コールを実行することです。AJAX Toolkit を使用すると、テストコールをすばやく実行できます。

    メモ

  • カスタムオブジェクトの場合は、リレーションのサフィックス __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>