В SilverStripe, один может принести кучу записей, например, так:SilverStripe 3.1.x - DataList Уникальный фильтр значений полей/Как использовать ORM для подсчета элементов в Групповом списке?
$entryRecords = Entry::get()->sort('Email');
Если я хочу, чтобы узнать, сколько запись записей у меня есть, я могу вызвать метод подсчета на DataList, как это:
$totalEntryRecords = $entryRecords->count();
Если я хочу, чтобы узнать, сколько уникальных адресов электронной почты в этих записях, используя SilverStripe ORM в PHP с DataList без написания цикла и не прибегая к управлению нового пользовательского запроса DB, как бы я это сделать?
Вот что я пытался до сих пор, и это не работает:
GroupedList::create($entryRecords)->groupBy('Email')->Count(); // does not work
я получаю фатальную ошибку: PHP Фатальная ошибка: Вызов функции члена Count() на не-объект
API GroupedList показывает, что существует метод Count. Поэтому не уверен, почему это не сработает.
Не знаю о 'setQueriedColumns', это полезно! Да, я бы подумал, что ваш будет быстрее, чем вручную перечислять «GroupedList», так как ваш будет работать в БД и отбрасывать все записи и зацикливаться на PHP. – Turnerj