主従関係、参照関係を作成する際に、子リレーション名という項目を設定するのをみたことがあるという方。
あの子リレーション名というのは何かご存知ですか?
今回は子リレーション名について解説していこうと思います。
Contents
前提条件
まずオブジェクトの項目作成で参照関係を作成します。
今回は応募者オブジェクトに対しての面談オブジェクトを作成して
応募者に複数の面談が紐づく形を作っていきます。


この状態で例えば面談側に応募者の項目を参照するクロスオブジェクト数式を作成したとします。
その際には
Applicant__r.項目名
という見慣れたリレーションの参照の仕方を使うことができます。
これは子から親を見に行く際のリレーション名です。『親オブジェクト名__r』が基本的な形です。
標準オブジェクトでは『__r』がないので注意しましょう。
子リレーションの使い所
では子リレーション名はどのように使うのでしょうか。
これはSOQL内で便利に使うことができます。
上記の応募者、面談の例で行くと、面談側から応募者の項目をSOQLで取得するのは、数式と同じようにできます。
たとえば
SELECT Id,Applicant__r.Name FROM Interview__c
では逆の場合はどうでしょうか。応募者側側から面談の項目を取得するにはこのようにします。
SELECT Id, ( SELECT Id FROM Interview_Applicant__r ) FROM Applicant
クエリの中でクエリを書きます。
これを図にするとこのようになります。


命名の良い例,悪い例
命名する際にはわかりにくい名前をつけるのはNGです。(どんな命名規則でもそうですが)
例えば今回の例でいうとApplicantという子リレーション名をつけてしまうと
SELECT Id, ( SELECT Id FROM Applicant__r ) FROM Applicant
と、なり結局何から取得しているのかがわかりにくくなります。
自動で入力してくれるものも無茶苦茶な命名規則なので、できれば
『子オブジェクト名_親オブジェクト名』なんていうふうに命名規則をつけてしまえば、
なんのオブジェクトから取得しようとしているかがわかるので運用もしやすいかと思います。
2021/04/29修正→子オブジェクトは複数なので、Inteviewsみたいに複数形でもいいですね。むしろOpportunitiesとかそうなってるし、その方がいいかも?
どちらにせよ命名規則大事。というお話。
コメント