2015-06-01 3 views
6

Ich arbeite in coderigniter.Ich möchte Eltern-Agent und seine Kind-Agent unter dem übergeordneten Agenten anzuzeigen. Meine Eltern Agent Datenanzeige wie dieserstellen Eltern und seine untergeordnete Struktur in codeigniter

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] =>
     [Bank_add] => vadodara 
     [branch_id] => 102 
     [uname] => 
     [pass] => 
     [enc_pass] => d41d8cd98f00b204e9800998ecf8427e 
     [agent_id] => 
     [profile_Pic] => 
    ) 

) 

Hier Introducer_code ist Mutter Agent code.Now ich Kind anzuzeigen Agentencode einführen, das will, ist id als 1.

Mein Code wie dieser ist.

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; 
     } 
    } 

} 

Ich habe vier Kinderagent, dessen Einführungscode ist 1. Und sein Ergebnis wie folgt.

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] =>
     [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] =>
     [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] => [email protected] 
     [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] => 
    ) 

) 

Wenn ich diesen Code ausführen, zeigt es nichts an. Nun, welchen Code sollte ich schreiben, um Agent unter Agent anzuzeigen?

Antwort

2

Ich habe ein bisschen Änderung in meinem Code geändert und jetzt funktioniert es. Mein Code ist:

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; 

} 

Änderungen:

1) In get_agent_tree_cummision() Funktion, die ich diese Zeile

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

2) In build_child ($ parent) Funktion Ich habe hinzugefügt, geändert haben Abfrage

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

$result = $query->result(); 

3) Und ich habe $ rollen aus der foreach-Schleife in BU zurückgegeben ild_child ($ parent) -Funktion.

Schließlich funktioniert es perfekt.

0

Ich konvertierte eine PHP-Klasse für Codeigniter, die Eltern Kind Beziehungen tut.

es sich befindet here.

0

Ich habe keine Ahnung, welche CI Version u verwenden, aber im Falle von V3 kann u versuchen Sie folgendes:

in Ihrem Modell:

<?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(); 
    } 

} 

und in Ihrem

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); 
    } 
} 

und Ihrer Ansicht

+0

Meine Codeigniter-Version ist 2.2.0. Kann ich diesen Code verwenden? –

+0

Ich habe einen kurzen Blick @Die Dokumentation - es sieht aus wie es sollte in Ordnung sein versuchen Sie es - wenn Sie irgendwelche Probleme haben, hier die Fehler zu posten – sintakonte

+0

Es funktioniert, aber falsche Ergebnisse geben.wir müssen Introducer-Code als Agenten-ID und Display-Ergebnis verwenden .Ich habe Abfrage ändern in loadChildAgents als ("Introducer_code", $ objAgent-> id). Aber es zeigt Kind nicht, dessen Wobei ID 2. –

Verwandte Themen