blog
ブログ

コピペで、簡単に!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

 

contact

ご相談・ご質問等ございましたら、お気軽にお問い合わせください。

翻訳

SFA/CRMに蓄積されている情報を活用する方法ガイド