この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

Apex を使用した Salesforce レコードの操作

Apex は、Lightning Data Service ではできない操作を行う (例: SOQL クエリを使用して特定のレコードを選択する) ためにユーザインターフェースをカスタマイズする必要がある場合にのみ使用してください。

sObject という用語は、Lightning プラットフォームに保存可能なオブジェクトを意味します。これは、標準オブジェクト (Account など) でも、ユーザが作成するカスタムオブジェクト (Merchandise オブジェクトなど) でもかまいません。

sObject 変数は、1 行のデータを表し、レコードとも呼ばれます。Apex でオブジェクトを操作するには、オブジェクトの SOAP API 名を使用して宣言します。次に例を示します。

1Account a = new Account();
2MyCustomObject__c co = new MyCustomObject__c();

Apex でのレコードの操作についての詳細は、「Apex でのデータの操作」を参照してください。

次のコントローラ例では、更新された Account レコードを保持します。update メソッドには、サーバ側コントローラアクションとしてコールできるように @AuraEnabled アノテーションが付加されています。

1public with sharing class AccountController {
2
3    @AuraEnabled
4    public static void updateAnnualRevenue(String accountId, Decimal annualRevenue) {
5        Account acct = [SELECT Id, Name, BillingCity FROM Account WHERE Id = :accountId];
6        acct.AnnualRevenue = annualRevenue;
7
8        // Perform isAccessible() and isUpdateable() checks here 
9        update acct;
10    }
11}

標準オブジェクトからのレコードデータの読み込み

サーバ側コントローラの標準オブジェクトからレコードを読み込みます。次のサーバ側コントローラには、商談レコードのリストと個々の商談レコードを返すメソッドがあります。
1public with sharing class OpportunityController {
2
3    @AuraEnabled
4    public static List<Opportunity> getOpportunities() {
5        List<Opportunity> opportunities = 
6                [SELECT Id, Name, CloseDate FROM Opportunity];
7        return opportunities;
8    }
9
10    @AuraEnabled
11    public static Opportunity getOpportunity(Id id) {
12        Opportunity opportunity = [
13                SELECT Id, Account.Name, Name, CloseDate, 
14                       Owner.Name, Amount, Description, StageName
15            FROM Opportunity
16            WHERE Id = :id
17         ];
18
19        // Perform isAccessible() check here 
20        return opportunity;
21    }
22}
次のコンポーネント例では、ボタンを押したときに上記のサーバ側コントローラを使用して商談レコードのリストを表示します。
1<aura:component controller="OpportunityController">
2    <aura:attribute name="opportunities" type="Opportunity[]"/>
3    
4    <lightning:button label="Get Opportunities" onclick="{!c.getOpps}"/>
5    <aura:iteration var="opportunity" items="{!v.opportunities}">
6    	<p>{!opportunity.Name} : {!opportunity.CloseDate}</p>
7    </aura:iteration>
8</aura:component>
ボタンを押すと、次のクライアント側コントローラで、サーバ側コントローラの getOpportunities() をコールして、コンポーネントの opportunities 属性を設定します。サーバ側コントローラメソッドのコール方法についての詳細は、「サーバ側のアクションのコール」 を参照してください。
1({
2    getOpps: function(cmp){
3        var action = cmp.get("c.getOpportunities");
4        action.setCallback(this, function(response){
5            var state = response.getState();
6            if (state === "SUCCESS") {
7                cmp.set("v.opportunities", response.getReturnValue());
8            }
9        });
10	 $A.enqueueAction(action);
11    }
12})

コンポーネントの初期化時にレコードデータを読み込むには、init ハンドラを使用します。

メモ

カスタムオブジェクトからのレコードデータの読み込み

Apex コントローラを使用し、コンポーネントの属性にデータを設定して、レコードデータを読み込みます。次のサーバ側コントローラは、カスタムオブジェクト myObj__c のレコードを返します。
1public with sharing class MyObjController {
2    
3    @AuraEnabled
4    public static List<MyObj__c> getObjects() {
5
6        // Perform isAccessible() checks here 
7        return [SELECT Id, Name, myField__c FROM MyObj__c];
8    }
9}

次のコンポーネント例では、上記のコントローラを使用して myObj__c カスタムオブジェクトからレコードのリストを返します。

1<aura:component controller="MyObjController">
2    <aura:attribute name="myObjects" type="namespace.MyObj__c[]"/>
3    <aura:iteration items="{!v.myObjects}" var="obj">
4      {!obj.Name}, {!obj.namespace__myField__c}
5    </aura:iteration>
6</aura:component>
次のクライアント側コントローラでは、サーバ側コントローラの getMyObjects() メソッドをコールして、myObjects コンポーネントの属性をレコードデータで設定します。次の手順は、init ハンドラを使用したコンポーネントの初期化時に行うこともできます。
1getMyObjects: function(cmp){
2    var action = cmp.get("c.getObjects");
3    action.setCallback(this, function(response){
4        var state = response.getState();
5        if (state === "SUCCESS") {
6            cmp.set("v.myObjects", response.getReturnValue());
7        }
8    });
9    $A.enqueueAction(action);
10}