Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Hitungan baris dalam Doktrin 2

Jika Anda hanya akan menggunakan MySQL, maka Anda dapat memanfaatkan FOUND_ROWS() fungsi.

Ini akan memerlukan penggunaan kueri asli, yang kemungkinan besar akan menghambat kemampuan Anda untuk menggunakan DB selain MySQL, tetapi menurut pengalaman saya, ini berfungsi cukup baik.

Saya telah menggunakan sesuatu seperti berikut ini dengan sangat sukses.

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;
}

Setelah mendapatkan array hasil dari fungsi di atas, saya mengekstrak elemen 'foundRows' ke variabel terpisah, menghapusnya (mis., unset($results['foundRows']) ), lalu lanjutkan menggunakan array seperti biasa.

Semoga membantu.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mengikat parameter untuk klausa WHERE IN dengan PDO

  2. Bagaimana cara menghasilkan interval waktu acak dan menambahkannya ke datetime mysql menggunakan php?

  3. Hitung berapa banyak baris yang nilainya sama

  4. Perbedaan antara SEKARANG(), SYSDATE() &CURRENT_DATE() di MySQL

  5. Bagaimana saya bisa memasukkan kata arab ke database mysql menggunakan java