2013-11-12 3 views
5

У меня есть три DataObjects в Silverstripe 3.1: проблема, голосование и избиратель. Проблемы имеют много голосов; Голоса имеют один избиратель и один вопрос. На моей странице Issue_show я хочу показать все голоса Issue, отсортированные по имени избирателя.sort has_many by has_one отношение в silverstripe

Функция в выпуске выглядит следующим образом:

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

Но я не могу понять, как получить доступ к имени голосующего сортировать по ней. Предположительно, это должно быть что-то вроде

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

, но это вызывает ошибку. Какой шаг я пропущу?

ответ

6

Для отношения has_one вам нужно добавить суффикс идентификатора к имени поля. Кроме того, отношение casting в DataList-> sort(), к сожалению, работает только с массивом.

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

Вы также могли бы ручкой сортировки в шаблоне что-то вроде этого:

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

Это не был проверен, но уверен, что должен работать

Смежные вопросы