web-dev-qa-db-fra.com

Comment interroger la table des catégories et obtenir un résultat avec ma commande stockée?

Dans mon projet Joomla, j'ai une catégorie principale qui contient quelques sous-catégories. J'ai réorganisé la commande dans le backend par glisser-déposer.

Comment interroger la base de données pour vérifier la commande?

$db = JFactory::getDbo();
$sql = "select c2.* from #__categories c, #__categories c2
where c.id={$catid} and c.lft<c2.lft and c2.rgt<c.rgt";
$db->setQuery($sql);
$categories = $db->loadObjectList();

J'utilise ce code pour obtenir toutes les sous-catégories, mais je ne suis pas en mesure de les organiser par ordre comme je l'avais fait dans le backend.

J'ai jeté un coup d'œil, mais il n'y a pas de colonne de classement dans le tableau des catégories.

Alors, où Joomla stocke le commande?

4
Joomler

Dans #__categories, Le champ de classement des tables est nommé lft. Ainsi, cette colonne enregistre l'ordre des catégories.

Si vous voulez regarder plus côté code, alors vous pouvez voir:

administrateur/composants/com_categories/models/categories.php

Et vérifiez la fonction populateState(), la commande y est définie.

Dans votre requête, il vous suffit d'ajouter une clause order by et de la modifier comme suit:

$sql = "select c2.* from #__categories c, #__categories c2 where c.id={$catid} and c.lft<c2.lft and c2.rgt<c.rgt order by c.lft";

J'espère que cela t'aides

3
Liz.