特殊时期,大家一定要保重身体。增强自身免疫力,一切都会过去,一起加油!!!

主従関係/参照関係にある子から親/親から子を参照SOQLで取得するー子リレーション

Salesforce zchao 23710℃ 0评论

SOQLで子リレーションの情報を取得したいです。

SOQLにて、あるオブジェクトの子リレーションになっているオブジェクトの情報を取得したい場合の話です。

子オブジェクトの参照名は、カスタムオブジェクトの場合は、__rとなっていて、標準オブジェクトは、最後はsをつける形となっています。

子リレーション名とは:Salesforceはオブジェクト間で参照関係を持たせることができますが、子リレーション名は親オブジェクトから子オブジェクトを参照する時の名前です。

①標準オブジェクトの場合
AccountとContact
親(Parent)が Account、子(Child)が Contact という位置づけになる。

子リレーション名で参照
親オブジェクト ===========> 子オブジェクト
親オブジェクト名で参照
親オブジェクト <=========== 子オブジェクト

親 (Account) から子 (Contact) を参照


SELECT Id, Name, (SELECT Id FROM Contacts) FROM Account  // Listで表示 (SELECT Id FROM Contacts)


リレーションを使用した値の取得、および条件指定
親から子へのアクセス

開発コンソルでDebug⇒Open Execute Anonymous Window
Accountの所有者ID=登録するユーザーIDの場合は、ContactのNameを表示されたい。
====*=========================================


List<Account> accounts = [SELECT a.Id,a.OwnerId,a.Name,(SELECT c.Id,c.Name FROM Contacts c) From Account a];
For(Account a: accounts){

For(Contact c : a.Contacts){

if(a.OwnerId == UserInfo.getUserId()){

System.debug(a.OwnerId+'***'+c.Name);
System.debug('---蝶々蝶々---');

}
}
}


=========================================*====
子 (Contact) から親 (Account) を参照

SELECT Id, Name, Account.Id, Account.Name FROM Contact

子から親へのアクセス(開発コンソルのコードイメージは添付ファイルに追加いたしました)


====*=========================================


List<Contact> contacts = [SELECT Id,Name,Account.Name,Account.OwnerId FROM Contact];
For(Contact c : contacts){

if(c.Account.Name != null && c.Account.OwnerId == UserInfo.getUserId()){

System.debug(c.Account.Name+'***'+c.Name);
System.debug('---蝶々蝶々---');

}
}


=========================================*====

②カスタムオブジェクトの場合

親オブジェクト:ParentObj__c
子オブジェクト:ChildObj__c
子リレーション名:ChildObjs
どっちが親でどっちが子かというと、参照関係の項目を作った方が子 です。

親 (Account) から子 (Contact) を参照


SELECT Id, Name, (SELECT Id, Name FROM ChildObjs__r) FROM ParentObj__c


親から子へのアクセス

親オブジェクトから子オブジェクトをSOQLで使用したい場合は、対象の子オブジェクトで定義されている主従関係もしくは参照関係の項目の子リレーション名により辿って子オブジェクトの所定の項目を指定できます。
カスタムオブジェクトの場合には、子リレーション名に__rを付与して記載することになります。
====*=========================================

List<ParentObj__c> parents = [SELECT p.Id,p.OwnerId,p.Name,(SELECT c.Id,c.Name FROM ChildObjs__r c) From ParentObj__c p];
For(ParentObj__c p : parents){

For(ChildObj__c c : p.ChildObjs__r){

if(p.OwnerId == UserInfo.getUserId()){

System.debug(p.OwnerId+'***'+c.Name);
System.debug('---蝶々蝶々---');

}
}
}


=========================================*====
子 (Contact) から親 (Account) を参照


SELECT Id, Name, ParentObj__c, ParentObj__r.name FROM ChildObj__c


子から親へのアクセス

子オブジェクトから親オブジェクトをSOQLで使用したい場合は、対象の子オブジェクトで定義されている主従関係もしくは参照関係の項目により辿って親オブジェクトの所定の項目を指定できます。
カスタムオブジェクトの場合には、項目のAPI参照名の__cの部分を__rに変換して記載することになります。
====*=========================================


List<ChildObj__c> childs = [SELECT Id,Name,ParentObj__r.Name,ParentObj__r.OwnerId FROM ChildObj__c];
For(ChildObj__c c : childs){

if(c.ParentObj__r.Name != null && c.ParentObj__r.OwnerId == UserInfo.getUserId()){

System.debug(c.ParentObj__r.Name+'***'+c.Name);
System.debug('---蝶々蝶々---');

}
}


=========================================*====

以上となります。

もしかしたら、毎日、昨日の自分より今日の自分は良くなるなら、十分だと思います。
何より大事なことは、人生を楽しむこと、幸せを感じること、それだけです。

转载请注明:zchao博客之家 » 主従関係/参照関係にある子から親/親から子を参照SOQLで取得するー子リレーション

喜欢 (8)or分享 (0)

您必须 登录 才能发表评论!