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

親子リレーションの識別

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

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

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

    メモ

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