Мне нужно создать страницу, содержащую список видео И список воспроизведения по категориям. Вы также можете сортировать эти элементы по дате. Наконец, страница разбивается на страницы с бесконечной прокруткой, которая должна загружать элементы 21 по 21.
Для этого я создал в репозиториях видео и плейлистов функцию findByCategory, которая очень проста:
Код: Выделить всё
$query = $this->createQuery();
return $query->matching($query->equals('categorie.uid',$categoryUid))->execute()->toArray();
Код: Выделить всё
if ($this->request->hasArgument('sort'))
$sort = $this->request->getArgument('sort');
else
$sort = 'antechrono';
//Get videos in repositories
$videos = $this->videoRepository->findByCategorie($categorie->getUid());
$playlists = $this->playlistRepository->findByCategorie($categorie->getUid());
//Merging arrays then sort it
if ($videos && $playlists)
$result = array_merge($videos, $playlists);
else if ($videos)
$result = $videos;
else if ($playlists)
$result = $playlists;
if ($sort == "chrono")
usort($result, array($this, "sortChrono"));
else if ($sort == "antechrono" || $sort == null)
{
usort($result, array($this, "sortAnteChrono"));
$sort="antechrono";
}
$this->view->assignMultiple(array('categorie' => $categorie, 'list' => $result, 'sort' => $sort));
Код: Выделить всё
Это прекрасно работает и показывает только элементы из запрошенной категории. К сожалению, у меня огромная проблема с производительностью: я пытался показать категорию, содержащую более 3000 записей, и загрузка занимает около одной минуты. Это немного долго.
Выполняя отладку моей переменной списка, я вижу, что она содержит все записи, даже несмотря на то, что это не должно быть так (это точка нумерации страниц...). Итак, первый вопрос: что-то не так в том, как я разбивал страницы?
Я пытался упростить свои запросы, включив функцию rawQuery ($query->execute (правда)) : у меня производительность намного выше, но я не могу получить ссылку на изображения (на мой взгляд, я получаю 1 или 0, но не uid изображения...). Второй вопрос: есть ли способ решить эту проблему?
Надеюсь, мое описание достаточно понятно. Спасибо за помощь
Подробнее здесь: https://stackoverflow.com/questions/597 ... pagination