6

Silverstripe 3.1 には、Issue、Vote、および Voter の 3 つの DataObject があります。問題には多くの投票があります。投票には、1 人の投票者と 1 つの問題があります。私のIssue_showページで、投票者の名前でソートされたすべての問題の投票を表示したいと思います。

問題の関数は次のようになります。

public function MyVotes() {
     return $this->Votes();
}

しかし、投票者の名前にアクセスして並べ替える方法がわかりません。おそらく、それは次のようなものでなければなりません

public function MyVotes() {
    return $this->Votes()->sort('Voter.Name');
} 

しかし、それはエラーをスローします。どのステップが欠けていますか?

4

2 に答える 2

7

has_one リレーションの場合、フィールド名に ID サフィックスを追加する必要があります。また、DataList->sort() でのリレーション キャストは、残念ながら配列でしか機能しません。

public function MyVotes() {
return $this->Votes()->sort(array('VoterID.Name'=>'ASC'));
}
于 2013-11-13T09:52:19.333 に答える
1

次のようなテンプレートで並べ替えを処理することもできます。

<% loop Votes.Sort('VoterID.Name') %>
    ...

これはテストされていませんが、うまくいくはずです

于 2016-01-26T16:50:07.030 に答える