codeigniter group_by retour uniquement la première ligne
j'ai ce problème dans codeigniter:
J'essaie de faire une arborescence de navigation de système de base de données.
modèle:
function getServices()
{
$this->db->select('service_url, service_title, category_title');
$this->db->join('services_category', 'services_category.id=services.category_id');
$this->db->group_by('category_title');
$this->db->order_by('service_title', 'ASC');
$query = $this->db->get('services');
if($query->result() == TRUE)
{
foreach($query->result_array() as $row)
{
$result[] = $row;
}
return $result;
}
}
vue:
<?php if(isset($services) && $services) : foreach($services as $s) : ?>
<ul>
<li><a href="#"><?php echo $s['category_title'] ?></a>
<ul>
<li><?php echo anchor('services/' . $s['service_url'], $s['service_title']); ?></li>
</ul>
</li>
</ul>
<?php endforeach; ?>
<?php endif; ?>
maintenant, c'est très bien, le résultat est de retour chaque catégorie de la voie est censé le faire, mais le service est de retour en un seul service par catégorie et, dans certaines catégories, il y a comme 15 services.
Quelqu'un sorte pour me donner un coup de main, ou une explication de ce qui se passe mal ?
Je vous remercie beaucoup.
"je ne suis pas un expert en php ou codeigniter, j'ai commencé juste de ne pas il ya longtemps, de sorte s'il vous plaît ne tirez pas les débutants."
note: j'ai essayé sans le group_by et order_by, et est le retour de tous les services, mais les catégories ne font que répéter,
ex:
category-a
service1
category-a
service2
category-b
service10
category-b
service11
category-c
service30
category-c
service31
....
OriginalL'auteur lesandru | 2012-10-17
Vous devez vous connecter pour publier un commentaire.
C'est une bonne lecture pour les fonctions d'agrégation lors de l'utilisation de Groupe Par (MySQL).
Une explication simple serait comme cette
Maintenant à l'aide de fonction d'agrégation SUM comme ça.
Le résultat sera:
Dans votre scénario,
GROUP BY
ne fonctionnera pas comme prévu car il ne recevrez qu'une seule Catégorie puisque vous regroupées votre requête par chaque catégorie.La solution idéale pour cela est d'avoir 2 fonctions distinctes,
GetCategories
etGetServices
.Ensuite dans votre fichier de vue, vous avez juste besoin de faire une boucle sur les Catégories puis faire une autre requête pour chaque Catégorie. Voici un aperçu de ce à quoi il va ressembler,
en fait, je veux vous demander quelque chose, si ce n'est pas trop, il est de bonne pratique d'utiliser le modèle dans la vue? ne pas briser le MVC ?
Salut Alex, elle ne casse pas MVC depuis que vous avez toujours maintenu votre définition de données dans le modèle, vous avez juste a exposé le modèle de méthodes à votre avis, qui devraient idéalement être au niveau du contrôleur. J'ai l'habitude d'utiliser des aides afin que tous les appels pour le modèle à partir de deux contrôleurs/vues dans les aides.
qui sonne bien avec les aides, je vous remercie beaucoup de l'Eca.
OriginalL'auteur ace