Salesforce技術ブログ(コピペで、簡単に!Apexから子リレーション名の確認+標準リレーション名 54個 まとめ。)

Salesforce技術ブログ(コピペで、簡単に!Apexから子リレーション名の確認+標準リレーション名 54個 まとめ。)

Salesforce技術ブログ(コピペで、簡単に!Apexから子リレーション名の確認+標準リレーション名 54個 まとめ。)


こんにちは、ハムスター森です。

AWS EC2で個人用のRedmineを立ち上げてみました。
Redmineって落ち着きますよねぇ〜…職業病でしょうか?

難しい顔で考え込むプログラマ

開発中、SOQLを書いている時に子リレーション名が知りたくなった時。

Salesforceにログインして、カスタムオブジェクトの設定画面を開いて…
とか
標準オブジェクトの名前からググって…
とか

たまのことですが、面倒なので、
いつでもコピペで確認できるようにApexからの参照方法を確認してみました。


・オブジェクトのメタデータから子リレーション名の一覧を取得してみる。


Schema.ChildRelationshipが便利です!
オブジェクトのメタデータからリレーションを特定し、リレーション名を取得できます。

例として、取引先オブジェクトだと下記のような形で取得することができます。

Schema.DescribeSObjectResult result = Account.SObjectType.getDescribe();
List<Schema.ChildRelationship> childRelation = result.getChildRelationships();

for (Schema.ChildRelationship c : childRelation) {
    System.debug(c.getChildSObject().getName() + ' / ' + c.getRelationshipName());
}

開発者コンソール1


・オブジェクトを指定して、リレーション名を取得する。


さて、先述したのは取引先(と諸々の子オブジェクト達)の取得でしたが、
それだとコピペで使えないので、分かりやすく文字列で指定できるようにしときます。

String parentObject = 'Account';
String childObject = 'Contact';

for (Schema.ChildRelationship c : Schema.getGlobalDescribe().get(parentObject).getDescribe().getChildRelationships()) {
    if (c.getChildSObject()==Schema.getGlobalDescribe().get(childObject)) {
        System.debug('リレーション名:'+c.getRelationshipName());
    }
}

開発者コンソール2

これで、
オブジェクトのAPI参照名を親子で指定すると、リレーション名が分かるようになりました。

これで完璧・・・?


・いや、コピペ出来ない時もある。事前に対策!


プログラマーは忙しいのです…コピペすらできない時のために、
ざっくりと標準オブジェクトのリレーション名を事前にまとめておきます。

AccessibleとかQueryableでフィルタリング済み。重複は、気にしない。

親オブジェクト
子オブジェクト
子リレーション名
契約
行動
Events
メモ
Notes
注文
Orders
ToDo
Tasks
注文
添付ファイル
Attachments
行動
Events
メモ
Notes
注文
Orders
ToDo
Tasks
メールテンプレート
添付ファイル
Attachments
キャンペーン
添付ファイル
Attachments
キャンペーン
ChildCampaigns
行動
Events
商談
Opportunities
ToDo
Tasks
取引先
取引先
ChildAccounts
納入商品
Assets
添付ファイル
Attachments
ケース
Cases
取引先責任者
Contacts
契約
Contracts
行動
Events
メモ
Notes
商談
Opportunities
注文
Orders
ToDo
Tasks
取引先責任者
納入商品
Assets
添付ファイル
Attachments
ケース
Cases
契約
ContractsSigned
行動
Events
メモ
Notes
ToDo
Tasks
リード
添付ファイル
Attachments
行動
Events
メモ
Notes
ToDo
Tasks
商談
添付ファイル
Attachments
行動
Events
メモ
Notes
ToDo
Tasks
商品
納入商品
Assets
添付ファイル
Attachments
行動
Events
メモ
Notes
ToDo
Tasks
納入商品
納入商品
ChildAssets
添付ファイル
Attachments
ケース
Cases
行動
Events
メモ
Notes
ToDo
Tasks
ケース
添付ファイル
Attachments
ケース
Cases


★開発する必要なく検索画面を作れる、検索クリエイターPRO 今なら30日無料トライアル受付中!★