Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Liczba wierszy w Doktrynie 2

Jeśli będziesz używać tylko MySQL, możesz skorzystać z jego FOUND_ROWS() funkcja.

Będzie to wymagało użycia zapytań natywnych, co najprawdopodobniej utrudni ci korzystanie z bazy danych innej niż MySQL, ale z mojego doświadczenia wynika, że ​​działa to całkiem dobrze.

Użyłem czegoś takiego z wielkim sukcesem.

use Doctrine\ORM\Query\ResultSetMapping;

public function getRecentComments($offset, $id) {
    $sql = "SELECT SQL_CALC_FOUND_ROWS * FROM Comment c 
        WHERE c.game = ?
        ORDER BY c.date DESC
        LIMIT ?,3";
    $rsm = new ResultSetMapping();
    $rsm->addEntityResult('Comment', 'c');
    $rsm->addFieldResult('c', 'id', 'id');
    $rsm->addFieldResult('c', 'game_id', 'game_id');
    $rsm->addFieldResult('c', 'date', 'date');
    $query = $this->getEntityManager()->createNativeQuery($dql, $rsm);
    $query->setParameters(array(
      (int)$id,
      (int)$offset
    ));
    $results = $query->getResult();

    // Run FOUND_ROWS query and add to results array
    $sql = 'SELECT FOUND_ROWS() AS foundRows';
    $rsm = new ResultSetMapping();
    $rsm->addScalarResult('foundRows', 'foundRows');
    $query = $this->getEntityManager()->createNativeQuery($sql, $rsm);
    $foundRows = $query->getResult();
    $results['foundRows'] = $foundRows[0]['foundRows'];

    return $results;
}

Po pobraniu tablicy wyników z powyższej funkcji wyodrębniam element 'foundRows' do oddzielnej zmiennej, usuwam go (tj. unset($results['foundRows']) ), a następnie kontynuuj normalne używanie tablicy.

Mam nadzieję, że to pomoże.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Przechowywanie plików dla aplikacji internetowych:system plików vs DB vs silniki NoSQL

  2. Instalacja MySQL w Dockerze kończy się niepowodzeniem z komunikatem o błędzie Nie można połączyć się z lokalnym serwerem MySQL przez gniazdo

  3. Nieprawidłowa wartość domyślna dla „dateAdded”

  4. SQL :Używanie GROUP BY i MAX na wielu kolumnach

  5. Sesja MySQL Workbench nie widzi aktualizacji bazy danych