Я ищу решение, чтобы построить и показать дополнительный индекс к пагинатору. У меня есть ~ 3000 элементов, которые распределяются на ~ 60 страниц (50 элементов на страницу).
Кроме того, мне нужен индекс от A до Z, где я могу перейти на ту страницу, где элементы, начинающиеся с символа, появляются первыми в список.
Моя первая попытка, но, возможно, я думаю о многом слишком сложном:
Я подумал о том, чтобы сделать запрос вроде:
SELECT left(name,1) as letter,count(*) as number
FROM mytable
WHERE pid in (list)
ORDER BY name
GROUP BY letter;
затем добавление чисел для получения смещения с последующим делением по размеру страницы, чтобы получить страницу, на которой будут начинаться элементы.
Но он уже вылетел при построении запроса:
$myQuery = $queryBuilder
->select('left(last_name,1) as letter,count(*) as number')
->from('fe_users')
->where(
$queryBuilder->expr()->in('pid', $pidList, true)
)
->orderBy('last_name', 'ASC')
->groupBy('letter');
, что приводит к в:
QueryBuilder::quoteIdentifiersForSelect() could not parse the select left(last_name,1) as letter,count(*) as number.