ID と親を使用してカテゴリ ツリーを格納するのが一般的です。私の場合、ナレッジベース、article
テーブル内のすべてのレコード(記事)はカテゴリ(フィールド付き)に属しcatid
、categories
テーブル内のすべてのレコードにはツリー構造を保存するID
andがあります。parent
article table
id | catid | date | subject | content
categories table
id | name | parent
問題は、記事をcsvまたはExcelにエクスポートするときです。
id | category | date | subject | content
記事が息子のカテゴリに属しているときと同じように、カテゴリツリー全体を維持する方法、次のようなカテゴリが必要です
grandpa/father/son/, or grandpa : father : son
次に、csv を Excel で開くことができます。メニュー -> データ -> テキストを列に、「:」で区切って、現在のカテゴリだけでなく、ツリー カテゴリ全体を取得します。
作業コードのサンプル:
$query = 'SELECT `a`.`id` AS `ID`, concat(CASE WHEN ISNULL(`f`.`name`) THEN "" ELSE concat(`f`.`name`,":") END,CASE WHEN ISNULL(`e`.`name`) THEN "" ELSE concat(`e`.`name`,":") END,CASE WHEN ISNULL(`d`.`name`) THEN "" ELSE concat(`d`.`name`,":") END,CASE WHEN ISNULL(`c`.`name`) THEN "" ELSE concat(`c`.`name`,":") END,CASE WHEN ISNULL(`b`.`name`) THEN "" ELSE `b`.`name` END) AS `Category`, `a`.`subject` AS `Subject`,`a`.`content` AS `Content`,`a`.`dt` AS `Date Created`,
FROM articles as a
LEFT JOIN categories as b ON a.catid = b.id
LEFT JOIN categories as c ON b.parent = c.id
LEFT JOIN categories as d ON c.parent = d.id
LEFT JOIN categories as e ON d.parent = e.id
LEFT JOIN categories as f ON e.parent = f.id
WHERE (DATE(`dt`) BETWEEN \'' . $date_from . '\' AND \'' . $date_to . '\') order by id asc';
ツリー構造フィールドをエクスポートしたい他の人に役立つことを願っています。