codeigniter active record de requête get et de la requête, sans la clause LIMIT
im à l'aide d'active record, de son tous les travail ok, mais je veux mettre le $data["totalres"] pour le total des résultats, je veux dire, la même requête mais sans le LIMITE
le problème est que les déclarations antérieures obtient unset lorsque vous faites un modificateur de requête, donc je ne peux même pas ajouter le $this->db->limit() après, je reçois les résultats.
des idées? je pense que c'est une mauvaise pratique de "duplicata" de la requête pour ce faire
function get_search($start, $numrows, $filter = array())
{
...
$this->db
->select("emp")
->from('emp')
->join('empr', 'empr.b = empr.id', 'left')
->like('code', $code)
->limit($numrows, $start);
...
$q = $this->db->get();
//number of rows WITHOUT the LIMIT X,Y filter
$data["totalres"] = ???????;
if ($q->num_rows() > 0)
{
$data["results"] = $q->result();
} else {
$data["results"] = array();
}
return $data;
}
peut-être que c' stackoverflow.com/a/23648274/2664160 //ignorer ce commentaire il a il a
OriginalL'auteur braindamage | 2011-09-14
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser
SQL_CALC_FOUND_ROWS
pour obtenir le nombre de lignes qui aurait été retourné sans-LIMIT
. Remarque le,FALSE
dans leselect
ligne. Cela dit CodeIgniter ne pas essayer d'échapper à laSELECT
la clause de backticks (parce queSQL_CALC_FOUND_ROWS
n'est pas un champ, et CodeIgniter ne réalisent pas que).Puis, après que la requête est lancée, nous avons besoin d'exécuter une autre requête pour obtenir le nombre total de lignes.
Je pense qu'ils n'ont pas construit en cause
SQL_CALC_FOUND_ROWS
est seulement pour MySQL, et CodeIgniter est censé fonctionner avec tous les types de base de données.La deuxième ligne de la deuxième extrait ne semble pas correc, il donne des erreurs. Je vous suggère de: $query = $this->db->query('SELECT FOUND_ROWS() comme Count')->ligne(); $result['taille'] = $query->Nombre;
Vous avez raison, fixe.
Très utile post. Merci.
OriginalL'auteur
Essayez ceci:
_compile_select
n'est pas disponible dans CodeIgniter 2.0.3+. github.com/EllisLab/CodeIgniter/issues/276Vous avez raison, doit être utilisé 2.0.2 jusqu'à ce qu'il fixe.
merci pour la réponse! et im en utilisant la version 2.0.3 ;(
Fixe pour la Question #276 par @KyleFarris
OriginalL'auteur
En fait, je peux suggérer l'utilisation de la Cei requête de mise en cache.
Pour l'utiliser, vous commencez à le cache, construire la requête sans limites. Exécuter votre requête pour obtenir le plein comte, puis appliquer la limite et exécuter la requête pour obtenir votre liste pour votre page avec le décalage que vous avez besoin.
Le cache se rappeler les variables qui ont été définis.
Vous pouvez ensuite vider le cache pour les requêtes suivantes.
Exemple
OriginalL'auteur
CodeIgniter 2.1.0 pas exécuter de code ci-dessous va le corriger.
OriginalL'auteur