Administrator

【図解】子リレーションとはなんなのか【セールスフォース】

Administrator
この記事は約2分で読めます。

主従関係、参照関係を作成する際に、子リレーション名という項目を設定するのをみたことがあるという方。
あの子リレーション名というのは何かご存知ですか?
今回は子リレーション名について解説していこうと思います。

前提条件

まずオブジェクトの項目作成で参照関係を作成します。
今回は応募者オブジェクトに対しての面談オブジェクトを作成して
応募者に複数の面談が紐づく形を作っていきます。

面談オブジェクトに応募者の参照項目を作成し、テストという応募者に関連づけています。
応募者テスト側から見ると参照されている面談は関連リストに出てきます。

この状態で例えば面談側に応募者の項目を参照するクロスオブジェクト数式を作成したとします。
その際には

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

と、なり結局何から取得しているのかがわかりにくくなります。
自動で入力してくれるものも無茶苦茶な命名規則なので、できれば

『子オブジェクト名_親オブジェクト名』なんていうふうに命名規則をつけてしまえば、
なんのオブジェクトから取得しようとしているかがわかるので運用もしやすいかと思います。

コメント