Как я могу ограничить свой запрос к базе данных в соответствии с нумерацией данных? - PullRequest
0 голосов
/ 05 февраля 2020

Я загружаю данные из своей базы данных, что является очень большим объемом данных. Чтобы получить действительно быструю производительность, я ограничиваю данные (с помощью моей parts функции)

Controller. php

$table = $this->em->getRepository($EntityName)->parts(10);
$table_json = $serializer->serialize($table, 'json');
$table_array = json_decode($table_json);
// here I am adding some complex data to the array from other database tables and then I encode the array again for the datatable
$data = json_encode($table_array);

page. html .twig:

  var table = $('.table').DataTable({
    "lengthMenu": [[10, 25, 50,100, -1], [10, 25, 50,100, "All"]],
    "pageLength": 10,
    "scrollX": true,
    "data":{{ output.data|raw }},

функция частей:

 public function parts($limit) {
      return $this->createQueryBuilder('documents')
      ->setMaxResults($limit)
      ->getQuery()
      ->execute();
    }

Что я хотел знать, есть ли шанс, что в зависимости от нумерации страниц я загружаю только 10 записей из своей базы данных? Таким образом, нумерация страниц с 1 по 10 будет загружать первые 10 записей, а с 11 до 20 - следующие 10 записей. Я много исследовал, и я не нашел решение, которое подходит для моего конкретного c кода. Это потому, что после загрузки из базы данных мне нужно что-то сделать с записями, прежде чем я покажу это в таблице данных.

1 Ответ

0 голосов
/ 06 февраля 2020
public function parts($offset, $limit) {
    return $this->createQueryBuilder('documents')
      ->setFirstResult($offset)
      ->setMaxResults($limit)
      ->getQuery()
      ->getResult();
}

Но я рекомендую использовать KnpPaginatorBundle

...