2016-12-07 7 views
0

私のモデル関数のフォーラムに正しい順序や親カテゴリとサブカテゴリが表示されません。親カテゴリは配列の最初に表示されませんか?

親カテゴリそれは、カテゴリ46の親であるため、PHPは、アレイの上部に最初である必要があり、45

質問:どのように私はそれが正しい順序

を表示することを確認するために取得することができます
Array 
(
    [0] => Array 
     (
      [fid] => 46 
      [pid] => 41 
      [name] => password_hash 
     ) 

    [1] => Array // Parent Category 
     (
      [fid] => 41 
      [pid] => 0 
      [name] => PHP 
     ) 

    [2] => Array 
     (
      [fid] => 45 
      [pid] => 41 
      [name] => str_replace 
     ) 

) 

モデル

public function get_forums($pid = '0') { 
    $categories_data = array(); 

    $this->db->where('pid', $pid); 
    $this->db->or_where('pid >', $pid); 
    $this->db->order_by('name', 'asc'); 

    $query = $this->db->get('forum'); 

    foreach ($query->result() as $result) { 

    $categories_data[] = array(
    'fid' => $result->fid, 
    'pid' => $result->pid,    
    'name' => $result->name 
    ); 

    if ($result->pid > 0) { 

    $category_children[] = $this->make_parent_list($result->pid); 

    if ($category_children) { 
    $categories = array_merge($category_children, $categories_data); 
    }  

    } 

    } 

    return $categories_data; 

} 

function make_parent_list($fid) { 
     $forum_data = array(); 


     $forum_query = $this->db->query("SELECT * FROM forum WHERE fid = '" . (int)$fid . "'"); 

     foreach ($forum_query->result() as $forum) { 

      if ($forum->pid > 0) { 

       $forum_data[] = array(
        'pid' => $forum->pid, 
       ); 

       $forum_children = $this->make_parent_list($forum->pid); 

       if ($forum_children) { 
        $forum_data = array_merge($forum_children, $forum_data); 
       }   

      } 
     } 

     return $forum_data; 
    } 

答えて

2

問題は発注にあります。セカンダリとしてそれを追加して、あなたはその後、あまりにも名前で結果を注文することができ

$this->db->order_by('fid', 'asc'); 

:このようなもので、この

$this->db->order_by('name', 'asc'); 

を変更

$this->db->order_by('fid', 'asc'); 
$this->db->order_by('name', 'asc'); 
+0

親をソートすることは可能ですカテゴリ名も同様に名前を付けてみましたが、親の名前は並べ替えません – user4419336

+0

親カテゴリの名前を並べ替えることはできません。によると、他の1つはfidのために働いた。 – user4419336

+0

mysqliとhttps://www.codeigniter.com/user_guide/database/query_builder.html私はget_forumsで呼び出す関数を使って質問を更新しました – user4419336

関連する問題