■標準オブジェクトの「子リレーション名」を調べたい
例えば、Event(行動)のサブクエリとして
EventRelation (招集された側の行動)をとってくるSOQL文を書きたいが、 EventRelation の relationshipName (子リレーション名)がわからない時の方法です。
開発者コンソールを開き、上のメニューから
Debug > Open Execute Anonymous Window を開き、
以下を記入して実行する。
Schema.DescribeSObjectResult R = Event.SObjectType.getDescribe();
List<Schema.ChildRelationship> C = R.getChildRelationships();
for(Schema.ChildRelationship cr: C) {
system.debug('@@' + Cr);
}
表示されたログで「Debug Only」のチェックをオンにし、
デバッグのみを表示します。
以下が出てきます。
getChildSObject=AcceptedEventRelation;
の部分が、Event の子オブジェクトに設定されているオブジェクト名です。
[5]|DEBUG|@@(
Schema.ChildRelationship[getChildSObject=AcceptedEventRelation; ・・・
Schema.ChildRelationship[getChildSObject=ActivityExtension; ・・・
Schema.ChildRelationship[getChildSObject=AttachedContentDocument; ・・・
この中から、
getChildSObject=EventRelation
となっている場所を探すと、以下になります。
14:28:22:012 USER_DEBUG [4]|DEBUG|@@
Schema.ChildRelationship[
getChildSObject=EventRelation;
getField=EventId;
getJunctionIdListNames=();
getRelationshipName=EventRelations;
isCascadeDelete=true;
isDeprecatedAndHidden=false;
isRestrictedDelete=false;
]
このうち、
getRelationshipName=EventRelations;
が、子リレーション名なので、
EventRelations ということがわかります。
Account (取引先)の子の Contact ()の
子リレーション名 Contacts と同様の法則に基づいていますね
参考
ChildRelationship クラス
https://developer.salesforce.com/docs/atlas.ja-jp.apexcode.meta/apexcode/apex_class_Schema_ChildRelationship.htm#!
relationshipName (リレーション名)について
https://developer.salesforce.com/docs/atlas.ja-jp.soql_sosl.meta/soql_sosl/sforce_api_calls_soql_relationships_understanding.htm?search_text=relationshipName
0 件のコメント:
コメントを投稿