0

隣接モデルを使用してトピックの階層を構築するデータベース テーブルから取得したデータの配列があります。各レコードには次のフィールドが含まれます。

  • 「id」 - 一意の AI ID。
  • 'name' - 表示名。
  • 'parent_id' - 親トピックの ID (ルート トピックの場合は null にすることができます)

配列は、ネストされていないデータベースから取得され、予想どおり id でソートされます。「id」フィールドはランダムで自由であり、有用な順序を生成するために信頼することはできません。parent_id を使用して配列を並べ替え、正しい隣接順序になるようにする方法を探していますが、最終結果がサブ配列にネストされることはありません。リストは次のようになります。

  • ルートトピックA
  • ATopic1
  • ATopic2
  • Child1ofATopic2
  • Child2ofATopic2
  • ATopic3
  • RootTopicB
  • BTopic1
  • BTopic2

ヘルプや例へのポインタ (別の言語であっても) をいただければ幸いです。

4

1 に答える 1

0

sortたとえば、カテゴリ内の同じIDの順序を格納するフィールドを追加できます。

もう1つの解決策は、(テストされていない)次のようなJOINを使用して、2つを(SQLで)ソートするORDER BY parent_id, idか、2つを組み合わせることです。ORDER BY sort

SELECT object.id, object.sort, parent.id, parent.sort
FROM objects AS object
LEFT JOIN objects AS parent ON object.parent=parent.id
ORDER BY parent.sort, object.sort;

それがテーブル名であると仮定するobjectsと、同じテーブルがobjectメインオブジェクトとして、およびparentその親であるオブジェクトとして使用されます(親を取得するために必要ですsort)。

于 2013-03-19T11:09:32.360 に答える