Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Codeigniter Active Record - Gesamtzahl gefundener Zeilen mit Limit zählen (MySQL)

Ich hatte zuvor genau die gleiche Anforderung an die Paginierung und konnte sie mit CodeIgniter Active Record zum Laufen bringen.

Setzen Sie zuerst die Option SQL_CALC_FOUND_ROWS als Pseudospalte in Ihrer Select-Anweisung und setzen Sie die Escape-Abfrage auf false:

$this->db->select('SQL_CALC_FOUND_ROWS null as rows, other columns ...',FALSE);

Nachdem Sie dann Ihre Abfrage mit dem Limit und dem Offset ausgeführt haben, weisen Sie die Ergebnismenge einem Rückgabearray zu:

$data = $this->db->get();
$return['results'] = $data->result();
// Do something with the results

Führen Sie abschließend eine zweite Abfrage aus, um die gefundenen Zeilen abzurufen, und weisen Sie diese auch dem Rückgabearray zu. Ich verwende hier Methodenverkettung, um alles in einem Schritt zu erledigen.

$return['rows'] = $this->db->query('SELECT FOUND_ROWS() count;')->row()->count;

Und geben Sie das Ergebnis und das Zeilenanzahlarray zurück.

return $return;