SFエンジニア
Apexで、取引先に関連付けられたすべての取引先責任者を取得するにはどうすれば良いかね?
SOQLクエリ―で実現できます。
目次
サンプルコード
開発者は、取引先 (Account) から3つのフィールド(Id、Name、Type)をクエリし、取引先に関連付けられたすべての取引先責任者 (Contact) の名前(first nameとlast name)を取得する必要があります。
以下のコードは、「Grand Hotels & Resorts Ltd」という取引先のすべての取引先責任者を取得して、System.debugで出力するコード例です。
String companyName = 'Grand Hotels & Resorts Ltd';
Account acc = [SELECT Id, Name, Type, (SELECT FirstName, LastName FROM Contacts) FROM Account WHERE Name = :companyName];
// Contactsのリストを取得してSystem.debugで出力
List<Contact> contactsList = acc.Contacts;
System.debug(contactsList);
SOQL文の中の (SELECT FirstName, LastName FROM Contacts) はサブクエリと言って、取引先責任者をクエリ―している部分です。
そして、取引先責任者のレコードは、acc.Contacts という記述で取引責任者のリストに出力できます。
Contacts は、子リレーション名と言って、取引先(親オブジェクト)と取引先責任者(子オブジェクト)の関連を識別するための名前です。
子リレーション名は、以下のようにして確認することができます。
1.管理者アカウントでログイン
2.設定>オブジェクトマネージャ>取引先責任者>項目とリレーション
3.親への参照フィールド(この場合、取引先名)>子リレーション名
以上です。