web-dev-qa-db-ja.com

カテゴリテーブルをクエリして、保存された注文で結果セットを取得する方法

私のJoomlaプロジェクトには、いくつかのサブカテゴリを含む1つのメインカテゴリがあります。ドラッグアンドドロップでバックエンドの順序を変更しました。

データベースにクエリを実行して順序を確認するにはどうすればよいですか?

$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();

このコードを使用してすべてのサブカテゴリを取得していますが、バックエンドで行ったようにそれらを順序付けすることはできません。

調べましたが、カテゴリテーブルに注文列がありません。

Joomlaがorderingを格納している場所はどこですか?

4
Joomler

_#__categories_では、テーブルの順序付けフィールドの名前はlftです。したがって、この列はカテゴリの順序を保存します。

コード側を詳しく調べたい場合は、次のように表示できます。

管理者/コンポーネント/com_categories/models/categories.php

関数populateState()を確認すると、順序が定義されています。

クエリでは、order by句を追加して、次のように変更するだけです。

_$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";
_

お役に立てれば

3
Liz.