2017-05-17 56 views
0

私は、customControllerからカスタムオブジェクトへのVisualforceページを持っています。 イベント(Event__c)からすべての注文(Orders__c)を取得したい。私はオファー(Offer__c)で始まりましたApex:2回繰り返します。

オファーはイベントのマスターディテールであり、イベントはオーダーのマスターディテールになっています。

<apex:page standardController="Caterer_Offer__c" sidebar="false" showHeader="false" > 
<apex:repeat var="events" value="{!Caterer_Offer__c.Event__r}"> 
    {!events.Name} 
    <apex:repeat var="orders" value="{!events.Orders__r}"> 
     <!-- {!orders.Name}--> 
    </apex:repeat> 
</apex:repeat> 
これを

デベロッパーコンソールにエラーメッセージである:

「集約関係 'を含むサポートされていない複雑な式で使用され

私は2つの以下のコードを試してみましたEvent__r.orders__r '"

...そして、イベントを保存して新しい変数を使用してすべての注文を「繰り返す」ことを心がけています。 SObjectの行が 要求されたフィールドを照会することなく、SOQL経由で取得された:Event__c.Orders__r

私は、エラーメッセージが、

<apex:page standardController="Caterer_Offer__c" sidebar="false" showHeader="false" > 
<apex:repeat var="events" value="{!Caterer_Offer__c.Event__r}"> 
    {!events.Name} 
    <apex:variable var="e" value="{!events}"/> 
    <apex:repeat var="orders" value="{!e.Orders__r}"> 
     <!-- {!orders.Name}--> 
    </apex:repeat> 
</apex:repeat> 

エラー・メッセージ、Salesforceのエラーを取得していません私はそれを説明することはできませんし、数時間後にそれに取り組むことができます....

答えて

0

標準コントローラのレコードはfそれを使用しているVisualforceページで参照されるこのような場合は、カスタムコントローラーを使用して標準コントローラーの機能を拡張する必要があります。標準コントローラaddFields()メソッドでは、これを頂点コードに必要なフィールドに拡張することができます。

私は同様の解決策を見つけることができましたhere

0

私はあなたの質問に親レコードがあり、それは子供だとは分かりませんが、私の答えはCaterer_Offer__cがEvent__cの親、Event__cがOrder__cの親であることに基づいています。私があなたがしたいと思うものである食事を提供するためのイベントのすべての注文をループすることができます。

要するに、2レベルの深さの子集約クエリを実行しようとしているため、実際にしようとしていることは実行できません。本質的には、次のようにしようとしています。

[SELECT名、(SELECT名FROM Orders__r)FROM Events__r)FRate Caterer_Offer__c];

salesforceでは、集計子クエリのレベルは1レベルしかなく、それ以上ではありません。そのため、リンクのクリックやボタンクリックで部分的なページの再レンダリングを行って、ある種のイベントでOrdersを遅延ロードするコードを持つ拡張機能を追加する必要があります。その場合は、Caterer_Offer__cとChild Events__cのVisualforceページを作成し、選択したイベントのIDを使用して要素を含むエクステンションを呼び出すいくつかのユーザーアクションから子オーダーをロードします。

しかし、あなたは、特にそれについて尋ね誤りがあったであろうために:

<apex:page standardController="Caterer_Offer__c" sidebar="false" showHeader="false" > 
    <apex:repeat var="event" value="{!Caterer_Offer__c.Events__r}"> 
     {!event.Name} 
     <apex:repeat var="order" value="{!event.Orders__r}"> 
      {!order.Name} 
     </apex:repeat> 
    </apex:repeat> 
</apex:page> 

しかし、再び、それは理由のSalesforce

における前述の単一奥行き子集約クエリの制限のことはできません
関連する問題