2017-02-16 13 views
0

$ form-> multiselect()から多レベルのカテゴリを作成しようとしています。
以下は私のテーブル構造です。単一テーブルのCodeIgniterの複数選択の多レベルカテゴリ

| id | parent | name | 
|----|--------|---------| 
| 10 |  0 | 'menu1' | 
| 12 |  10 | 'menu2' | 
| 13 |  10 | 'menu3' | 
| 14 |  0 | 'menu4' | 

結果は

+----+---------+ 
| id | name | 
+----+---------+ 
| 10 | 'menu1' | 
| 12 | 'menu2' | 
| 13 | 'menu3' | 
| 14 | 'menu4' | 
+----+---------+ 


れたIDは、選択要素の表示の値と名前のために示しました。

<select> 
    <option value='10'>menu1</option> 
    <option value='12'>menu2</option> 
    <option value='13'>menu3</option> 
    <option value='14'>menu4</option> 
</select> 


階層.Iは以下見せたくない示しました。

<select> 
     <option value='10'>menu1</option> 
     <option value='12'>menu1 -> menu2</option> 
     <option value='13'>menu1 -> menu3</option> 
     <option value='14'>menu4</option> 
    </select> 

私は何をすべき?
$ form_multiselect()の構造を操作したいと思います。

+0

独自のカスタムヘルパーを作成する必要があります。可能であれば –

+0

はい。 –

+0

テーブルはデータベースにありますか? –

答えて

1

私はあなたが上にリストしたテーブルがあなたがそれを持っているフォーマットでデータベースにあると仮定しています...これがあなたがそれを得る方法であれば(テーブル名を投稿しなかったので、 )ということを自分で行うことがあるでしょう:...

$result = $this->db->select('CASE WHEN b.name IS NOT NULL THEN CONCAT(a.name, ,\' -> \' b.name) ELSE a.name END AS option') 
    ->from('yourtable a') 
    ->join('yourtable b', 'a.parent = b.id', 'left') 
    ->get()->result(); 

あなたの質問は、私が謝罪、私を誤解している場合は、上に行くことがあまりなかったの...

+0

activerecordを使用してデータを取得します –

+1

これはDBレイヤーでは実行しないでください。もし葉もまた別の葉を持っているとすれば?あなたは10レベルの隣接関係を持つこのクエリーの大きさを想像できますか? '$ menu = ['parent' => 'menu1'、 'child' => ['menu2'、 'menu3'、...]のような配列に' foreach'を作り、 'など]]] '。これは最も簡単な方法ですが、もう一つはよりスマートですが、同時により難しい方法です。このブログの記事を見てくださいhttp://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/ – VaL

+1

MySQLでは、確かに。私はいつも使っているSQL Serverを、再帰的なcteで構築します。とにかく...私は解決策を提供した、あなた自身を提供するために自由に感じる –

関連する問題