XML 設定ファイルの要素
HTML テンプレートディレクティブ
HTML テンプレートエラー
デコレータ
@salesforce モジュール
graphql
refreshGraphQL(result)
ページネーション
子と親のリレーション
PageReference の型
GraphQL ワイヤアダプタのクエリでは、親または子とのリレーションを指定できます。
複数のオブジェクトが、同じオブジェクトに対して子リレーションを持つことができます。たとえば、親取引先には、子リレーションを指定できます。一部のオブジェクトには、別のオブジェクトへのリレーションを指定することもできます。たとえば、取引先には、他のオブジェクトの納入商品、ケース、取引先責任者などと子リレーションが設定できます。
子リレーションを照会するには、親の node に子リレーションの名前と項目を渡します。GraphQL ワイヤアダプタでは、1 レベルの子リレーションしかサポートされていません。たとえば、取引先レコードの取引先責任者を要求できますが、その取引先責任者の子リレーションは要求できません。
応答の子リレーションレコードはページ設定され、カーソルとページ設定情報を含みます。
子リレーションを含むクエリを作成するには、GraphQL ワイヤアダプタの query パラメータを使用します。
1query operationName {
2 uiapi {
3 query {
4 Account (where: { Name: { eq: "United Oil" }}) {
5 edges {
6 node {
7 Id
8 Name {
9 value
10 }
11 Contacts ( first: 5 ) {
12 edges {
13 node {
14 Name { value }
15 }
16 }
17 totalCount
18 pageInfo {
19 hasNextPage
20 }
21 }
22 }
23 }
24 }
25 }
26 }
27}応答は、次のようになります。
1{
2 "data": {
3 "uiapi": {
4 "query": {
5 "Account": {
6 "edges": [
7 {
8 "node": {
9 "Id": "001RM000005Zcl6YAC",
10 "Name": {
11 "value": "United Oil"
12 },
13 "Contacts": {
14 "edges": [
15 {
16 "node": {
17 "Name": {
18 "value": "Pat Stumuller"
19 }
20 }
21 },
22 {
23 "node": {
24 "Name": {
25 "value": "Stella Pavlova"
26 }
27 }
28 },
29 {
30 "node": {
31 "Name": {
32 "value": "Lauren Boyle"
33 }
34 }
35 },
36 {
37 "node": {
38 "Name": {
39 "value": "Jane Grey"
40 }
41 }
42 },
43 {
44 "node": {
45 "Name": {
46 "value": "Arthur Song"
47 }
48 }
49 }
50 ],
51 "totalCount": 11,
52 "pageInfo": {
53 "hasNextPage": true
54 }
55 }
56 }
57 }
58 ]
59 }
60 }
61 }
62 },
63 "errors": []
64}親リレーションを照会するには、子の node に親リレーションの名前と項目を渡します。GraphQL ワイヤアダプタは、1 レベルの親リレーションを返します。子リレーションとは異なり、複数レベルの親リレーションを要求できます。たとえば、商談に関連付けられた取引先所有者の名前を要求します。
親リレーションを含むクエリを作成するには、GraphQL ワイヤアダプタの query パラメータを使用します。
1query operationName {
2 uiapi {
3 query {
4 Opportunity {
5 edges {
6 node {
7 Id
8 Name {
9 value
10 }
11 Account {
12 Name {
13 value
14 }
15 }
16 }
17 }
18 }
19 }
20 }
21}応答は、次のようになります。
1{
2 "data": {
3 "uiapi": {
4 "query": {
5 "Opportunity": {
6 "edges": [
7 {
8 "node": {
9 "Name": {
10 "value": "Edge SLA"
11 },
12 "Account": {
13 "Name": {
14 "value": "Edge Communications"
15 }
16 }
17 }
18 },
19 {
20 "node": {
21 "Name": {
22 "value": "Edge Emergency Generator"
23 },
24 "Account": {
25 "Name": {
26 "value": "Edge Communications"
27 }
28 }
29 }
30 },
31 {
32 "node": {
33 "Name": {
34 "value": "Edge Emergency Generator"
35 },
36 "Account": {
37 "Name": {
38 "value": "Edge Communications"
39 }
40 }
41 }
42 },
43 {
44 "node": {
45 "Name": {
46 "value": "Edge Installation"
47 },
48 "Account": {
49 "Name": {
50 "value": "Edge Communications"
51 }
52 }
53 }
54 },
55 {
56 "node": {
57 "Name": {
58 "value": "Burlington Textiles Weaving Plant Generator"
59 },
60 "Account": {
61 "Name": {
62 "value": "Burlington Textiles Corp of America"
63 }
64 }
65 }
66 }
67 ]
68 }
69 }
70 }
71 },
72 "errors": []
73}リレーションの項目の中には、Account.OwnerId のように、多態的な項目があります。多態的なリレーションを含むクエリを作成するには、GraphQL ワイヤアダプタの query パラメータを使用し、polymorphicParentRelationship 項目を使用してオブジェクトにアノテーションを付加します。
この例では、OwnerId の多態的な項目が User オブジェクトに対応付けられています。
1query AccountCasesDetail {
2 uiapi {
3 query {
4 Account(where: { Name: { like: "Acme%" } }) {
5 edges {
6 node {
7 Id
8 Name {
9 value
10 displayValue
11 }
12 Cases(
13 where: { IsClosed: { ne: true } }
14 orderBy: { LastModifiedDate: { order: ASC } }
15 ) {
16 edges {
17 node {
18 Id
19 Subject {
20 value
21 displayValue
22 }
23 Owner {
24 ... on User {
25 Name {
26 value
27 }
28 }
29 }
30 CreatedDate {
31 displayValue
32 }
33 Id
34 IsEscalated {
35 value
36 }
37 }
38 }
39 }
40 }
41 }
42 }
43 }
44 }
45}応答は、次のようになります。
1{
2 "data": {
3 "uiapi": {
4 "query": {
5 "Account": {
6 "edges": [
7 {
8 "node": {
9 "Name": {
10 "value": "Acme Corp.",
11 "displayValue": null
12 },
13 "Cases": {
14 "edges": [
15 {
16 "node": {
17 "Subject": {
18 "value": "Starting generator after electrical failure"
19 },
20 "Owner": {
21 "Name": {
22 "value": "Amy Taylor"
23 }
24 },
25 "CreatedDate": {
26 "displayValue": "10/28/2022, 3:44 PM"
27 },
28 "IsEscalated": {
29 "value": false
30 }
31 }
32 },
33 {
34 "node": {
35 "Subject": {
36 "value": "Cannot start generator after electrical failure"
37 },
38 "Owner": {
39 "Name": {
40 "value": "John Kingsley"
41 }
42 },
43 "CreatedDate": {
44 "displayValue": "10/28/2022, 3:44 PM"
45 },
46 "IsEscalated": {
47 "value": false
48 }
49 }
50 },
51 ]
52 }
53 }
54 }
55 ]
56 }
57 }
58 }
59 },
60 "errors": []
61}詳細は、「Lightning Web コンポーネントでの GraphQL API の使用」を参照してください。
Tip
関連トピック
The Japanese Summer '24 guide is now live