在silverstripe中通过has_one关系排序has_many

时间:2013-11-12 16:59:10

标签: silverstripe

我在Silverstripe 3.1中有三个DataObjects:一个问题,一个投票和一个选民。问题有很多投票;投票有一个选民和一个问题。在我的Issue_show页面上,我想显示所有问题的投票,按选民姓名排序。

问题中的函数如下所示:

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

但我无法弄清楚如何访问选民姓名以便按其排序。据推测,它应该像

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

但是会引发错误。我错过了什么步骤?

2 个答案:

答案 0 :(得分:6)

对于has_one关系,您需要将ID后缀添加到fieldname。此外,不幸的是,DataList-> sort()中的关系转换仅适用于数组。

public function MyVotes() {
return $this->Votes()->sort(array('VoterID.Name'=>'ASC'));
}

答案 1 :(得分:1)

您还可以在模板中处理类似这样的排序:

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

这尚未经过测试,但非常确定应该可行