2017-04-21 60 views
2

我想獲得父母的孩子關係,併成功得到,但我堅持如何確定什麼是兒童的水平。確定什麼是chlid的水平php

這裏是我的代碼

public function getDownline($userid = null) { 
     $category_data = array(); 

     $where = array('parent_id' => $userid); 
     $this->db->where($where); 
     $category_query = $this->db->get('users')->result(); 

     $category_data = array(); 
     foreach ($category_query as $category) { 
      $category_data[$category->id] = array($category); 
      $children = $this->getDownline($category->id); 
      if ($children) { 
       $category_data[$category->id]['children'] = $children; 
      } 
     } 

     return $category_data; 
    } 

下面是我的表結構

enter image description here

我這種格式

[1136] => Array 
     (
      [0] => stdClass Object 
       (
        [id] => 1136 
        [gid] => 4 
        [parent_id] => 1112 
        [username] => test 
        [email] => [email protected] 
        [name] => test 
        [status] => 1 
        [registerd] => 2017-04-20 08:49:25 
        [last_login] => 2017-04-21 10:42:25 
        [password] => 4eca045dfa240f56a1f9d45eaa53b71c6eccd6a7 
        [tranjection_password] => 
       ) 

      [children] => Array 
       (
        [1148] => Array 
         (
          [0] => stdClass Object 
           (
            [id] => 1148 
            [gid] => 4 
            [parent_id] => 1136 
            [username] => test_downline 
            [email] => [email protected] 
            [name] => test_downline 
            [status] => 1 
            [registerd] => 2017-04-21 10:42:56 
            [last_login] => 2017-04-21 11:08:00 
            [password] => 4eca045dfa240f56a1f9d45eaa53b71c6eccd6a7 
            [tranjection_password] => 
           ) 

          [children] => Array 
           (
            [1150] => Array 
             (
              [0] => stdClass Object 
               (
                [id] => 1150 
                [gid] => 4 
                [parent_id] => 1148 
                [username] => test1_downline1 
                [email] => [email protected] 
                [name] => test1_downline1 
                [status] => 1 
                [registerd] => 2017-04-21 11:08:27 
                [last_login] => 0000-00-00 00:00:00 
                [password] => 4eca045dfa240f56a1f9d45eaa53b71c6eccd6a7 
                [tranjection_password] => 
               ) 

             ) 

           ) 

         ) 

        [1149] => Array 
         (
          [0] => stdClass Object 
           (
            [id] => 1149 
            [gid] => 4 
            [parent_id] => 1136 
            [username] => test_downline2 
            [email] => [email protected] 
            [name] => test_downline2 
            [status] => 1 
            [registerd] => 2017-04-21 11:06:35 
            [last_login] => 0000-00-00 00:00:00 
            [password] => 4eca045dfa240f56a1f9d45eaa53b71c6eccd6a7 
            [tranjection_password] => 
           ) 

         ) 

       ) 

     ) 

回答

1

,我認爲你應該這樣做讓輸出這裏的對象上下文 等等mething像應工作

class Users_Model extends CI_Model 
{ 

    public function getDownline(User_Object $obj, $level = 0) 
    { 
     $obj->level = $level; 

     $where = array('parent_id' => $obj->id); 
     $this->db->where($where); 
     $query = $this->db->get('users')->result("User_Object"); 

     foreach ($query as $objUser) 
     { 
      $obj->add($objUser); 
      $this->getDownline($objUser, ($level+1)); 
     } 
     return $obj; 
    } 

    public function downline_income($userId = null, $offset = 0) 
    { 
     $userId = user::id(); 
     $objUser = new User_Object; 
     $objUser->id = $userId; 
     $downline = $this->user->getDownline($objUser); 
    } 
} 


class User_Object 
{ 
    private $children = []; 
    public $level = 0; 

    public function add(User_Object $obj) 
    { 
     $this->children[] = $obj; 
    } 

} 
+0

收到錯誤:致命錯誤:調用未定義的方法stdClass的::加入() –

+0

你如何從控制器調用getDownline功能?給我看你的代碼請輸入 – sintakonte

+0

'public function downline_income($ userId = null,$ offset = 0){userId = user :: id(); $ downline = $ this-> user-> getDownline($ userId);' –