Create parent element and its child tree in codeigniter

I work in codeigniter. I want to display the parent agent and its child agent under the parent agent. My parent agent details are displayed as follows

Array ( [0] => stdClass Object ( [id] => 1 [Introducer_code] => 0 [Designation] => 2 [Cader] => [Code] => [Name] => Vinod [Area] => [D_W_S] => Rajendra [Gender] => Male [Dob] => 2014-12-01 [age] => 25 [mobile_no] => 123456789 [Village] => vadodara road [city] => vadodara [District] => vadodara [State] => 1 [Pincode] => 391212 [PAN] => BCD1234587 [Nominee] => Rajendra [N_Relation] => Father [N_age] => 35 [D_O_J] => 2014-12-22 [amount] => 100 [Bank_acc] => 0123467 [Bank_add] => vadodara [branch_id] => 102 [uname] => [pass] => [enc_pass] => d41d8cd98f00b204e9800998ecf8427e [agent_id] => [profile_Pic] => ) ) 

Here Introducer_code is the code of the parent agent. Now I want to display a child agent whose introduction code is id.

My code is as follows.

 public function get_agent_tree_commision() { $query = $this->db->query("select * from agent where id = '1'"); $result = $query->result(); echo "<pre>"; print_r($result); $roles = array(); foreach($result as $key=>$value) { if($result[$key]->Introducer_code != 0) { $role = array(); $role['id'] = $result[$key]->id; $role['Name'] = $result[$key]->Name; $children = $this->build_child($result, $result[$key]->id); //print_r($children); if( !empty($children) ) { $role['children'] = $children; } $roles[] = $role; } } return $roles; //$this->load->view("cashier/get_agent_tree_commision"); } public function build_child($result, $parent) { $roles = array(); foreach($result as $key => $val) { if($result[$key]->Introducer_code == $parent) { $role = array(); $role['role_id'] = $result[$key]->id; $role['role_name'] = $result[$key]->Name; $children = $this->build_child($result, $result[$key]->id); if( !empty($children) ) { $role['children'] = $children; } $roles[] = $role; return $roles; } } } 

I have four child agents whose introducer code is 1. And its result is as follows.

 Array ( [0] => stdClass Object ( [id] => 2 [Introducer_code] => 1 [Designation] => 1 [Cader] => [Code] => [Name] => Nisarg Bhavsar [Area] => [D_W_S] => Bhavsar [Gender] => Male [Dob] => 2014-12-01 [age] => 19 [mobile_no] => 123456789 [Village] => vadodara road [city] => vadodara [District] => vadodara [State] => 1 [Pincode] => 391212 [PAN] => BCD1234587 [Nominee] => Bhavsar [N_Relation] => Father [N_age] => 35 [D_O_J] => 2014-12-22 [amount] => 100 [Bank_acc] => 0123467 [Bank_add] => vadodara [branch_id] => 11 [uname] => [pass] => [enc_pass] => d41d8cd98f00b204e9800998ecf8427e [agent_id] => [profile_Pic] => ) [1] => stdClass Object ( [id] => 3 [Introducer_code] => 1 [Designation] => 1 [Cader] => [Code] => [Name] => test1 [Area] => [D_W_S] => test [Gender] => Male [Dob] => 2004-12-01 [age] => 25 [mobile_no] => 123456789 [Village] => vadodara road [city] => vadodara [District] => vadodara [State] => 1 [Pincode] => 391212 [PAN] => BCD1234587 [Nominee] => test [N_Relation] => Father [N_age] => 40 [D_O_J] => 2014-12-26 [amount] => 100 [Bank_acc] => 0123467 [Bank_add] => vadodara [branch_id] => 11 [uname] => [pass] => [enc_pass] => d41d8cd98f00b204e9800998ecf8427e [agent_id] => [profile_Pic] => ) [2] => stdClass Object ( [id] => 4 [Introducer_code] => 1 [Designation] => 1 [Cader] => [Code] => [Name] => Test [Area] => [D_W_S] => Modi [Gender] => Male [Dob] => 1985-04-01 [age] => 21 [mobile_no] => 2147483647 [Village] => Near Petrol Pump [city] => Vadodara [District] => Vadodara [State] => 1 [Pincode] => 391300 [PAN] => GDT126985 [Nominee] => Tester [N_Relation] => Father [N_age] => 45 [D_O_J] => 2015-04-14 [amount] => 100 [Bank_acc] => [Bank_add] => [branch_id] => 112 [uname] => test@test.com [pass] => 1234 [enc_pass] => 81dc9bdb52d04dc20036dbd8313ed055 [agent_id] => [profile_Pic] => ) [3] => stdClass Object ( [id] => 5 [Introducer_code] => 1 [Designation] => 1 [Cader] => [Code] => [Name] => BHUMI [Area] => [D_W_S] => BHUMI [Gender] => Female [Dob] => 2015-04-16 [age] => 5 [mobile_no] => 2147483647 [Village] => VALSAD [city] => VALSAD [District] => VALSAD [State] => 1 [Pincode] => 396001 [PAN] => ABFCJH9798H [Nominee] => BHUMI [N_Relation] => OTHER [N_age] => 05 [D_O_J] => 2015-04-15 [amount] => 0 [Bank_acc] => [Bank_add] => [branch_id] => 112 [uname] => [pass] => [enc_pass] => [agent_id] => [profile_Pic] => ) ) 

When I run this code, it does not display anything. Now, what code do I need to write to display the agent under the agent?

+6
source share
3 answers

I changed a little change in my code and now it works. My code is:

 public function get_agent_tree_commision() { $query = $this->db->query("select * from agent where id = '1'"); $result = $query->result(); $roles = array(); foreach($result as $key=>$value) { $role = array(); $role['id'] = $result[$key]->id; $role['Name'] = $result[$key]->Name; $children = $this->build_child($result[$key]->id); if( !empty($children) ) { $role['children'] = $children; } $roles['role'] = $role; } $this->load->view("cashier/get_agent_tree_commision",$roles); } public function build_child($parent) { $query = $this->db->query("select * from agent where Introducer_code = '$parent'"); $result = $query->result(); $roles = array(); foreach($result as $key => $val) { if($result[$key]->Introducer_code == $parent) { $role = array(); $role['id'] = $result[$key]->id; $role['Name'] = $result[$key]->Name; $children = $this->build_child($result[$key]->id); if( !empty($children) ) { $role['children'] = $children; } $roles[] = $role; } } return $roles; } 

changes:

1) In the get_agent_tree_cummision () function, I changed this line

 $children = $this->build_child($result[$key]->id); 

2) In the function build_child ($ parent) I added a request

 $query = $this->db->query("select * from agent where Introducer_code = '$parent'"); $result = $query->result(); 

3) And I am returning $ role from the foreach loop to the build_child ($ parent) function.

Finally, it works great.

+2
source

I have converted the PHP class to Codeigniter, which executes parent child relations.

It is located here.

0
source

I do not know which version of CI to use, but in the case of V3 u, you can try the following:

in your model:

 <?php class Agent_Model extends CI_Model { public function loadAgent($id) { $query = $this->db ->select("*") ->from("agent") ->where("id",$id) ->get(); $objAgent = $query->row(0, "Agent_Object"); $this->loadChildAgents($objAgent); return $objAgent; } private function loadChildAgents(Agent_Object $objAgent) { $query = $this->db ->select("*") ->from("agent") ->where("Introducer_code",$objAgent->Introducer_code) ->get(); if ($query->num_rows() > 0) { foreach($query->result() AS $objChild) { $objAgent->addChild($objChild); } } } } class Agent_Object { private $arrChilds = array(); public function addChild($objChild) { $this->arrChilds[] = $objChild; } public function getChilds() { $obj = new ArrayObject($this->arrChilds); return $obj->getIterator(); } } 

and in your controller

 <?php class Agent extends CI_Controller { public function __construct() { $this->load->model("Agent_Model"); } public function agentTree() { $objAgent = $this->Agent_Model->loadAgent(1); $arrViewData = array("objAgent" => $objAgent); $this->load->view("cashier/get_agent_tree_commision",$arrViewData); } } 

and in your opinion

 <?php echo $objAgent->Name; ?> Childs <?php foreach($objAgent->getChilds() AS $key => $objChild) { print_r($objChild); } 
0
source

Source: https://habr.com/ru/post/988304/


All Articles