我在Silverstripe 3.1中有三个DataObjects:一个问题,一个投票和一个选民。问题有很多投票;投票有一个选民和一个问题。在我的Issue_show页面上,我想显示所有问题的投票,按选民姓名排序。
问题中的函数如下所示:
public function MyVotes() {
return $this->Votes();
}
但我无法弄清楚如何访问选民姓名以便按其排序。据推测,它应该像
public function MyVotes() {
return $this->Votes()->sort('Voter.Name');
}
但是会引发错误。我错过了什么步骤?
答案 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') %>
...
这尚未经过测试,但非常确定应该可行