この記事では、Apex の SOQL で子オブジェクトのレコードを取得する方法についてまとめています。
SOQL で子レコードを取得する書き方
ポイントは以下の2つです。
- SELECT 句の中に、 ( ) で囲んだ子オブジェクトに関するSOQL文を含める
- 子オブジェクトのSOQL文では、FROM の後に子リレーション名を書く
SELECT Name,
(
SELECT LastName
FROM Contacts
)
FROM Account
子オブジェクトがカスタムオブジェクトの場合、FROMの後は子リレーション名 + __r にする必要があります。
SELECT Name,
(
SELECT Name
FROM Children__r
)
FROM Parent__c
また、取得した子レコードを参照する際にも子リレーション名を使います。
List<Parent__c> pList = [
SELECT Name,
(
SELECT Name
FROM Children__r
)
FROM Parent__c
];
System.debug(pList[0].Children__r[0].Name);
子リレーション名の確認方法
子リレーションを確認する際は、オブジェクトマネージャで子となるオブジェクトを参照し、「項目とリレーション」から親オブジェクトとの参照(主従)関係項目の情報を見ると確認できます。
コメント