在silverstripe中通过has_one关系排序has_many

mie*_*rla 6 silverstripe

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

问题中的函数如下所示:

public function MyVotes() {
     return $this->Votes();
}
Run Code Online (Sandbox Code Playgroud)

但我无法弄清楚如何访问选民的名字来进行排序.据推测,应该是这样的

public function MyVotes() {
    return $this->Votes()->sort('Voter.Name');
} 
Run Code Online (Sandbox Code Playgroud)

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

小智 7

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

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