我在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] => 0123467
[Bank_add] => vadodara
[branch_id] => 102
[uname] =>
[pass] =>
[enc_pass] => d41d8cd98f00b204e9800998ecf8427e
[agent_id] =>
[profile_Pic] =>
)
)
这里Introducer_code是父代理代码。现在我想显示引入代码为id为1的子代理。
我的代码是这样的。
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;
}
}
}
我有四个孩子代理,其介绍人代码是1.结果就是这样。
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] =>
)
)
当我运行此代码时,它什么也没显示。 现在,我应该在代理下写代码显示代码?
答案 0 :(得分:2)
我在代码中改变了一点点,现在它正在运行。 我的代码是:
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;
}
的变化:
1)在get_agent_tree_cummision()函数中我改变了这一行
$children = $this->build_child($result[$key]->id);
2)在build_child($ parent)函数中,我添加了查询
$query = $this->db->query("select * from agent where Introducer_code = '$parent'");
$result = $query->result();
3)我在build_child($ parent)函数的foreach循环中返回$ roles。
最后,它完美无缺。
答案 1 :(得分:0)
我转换了一个PHP类,用于执行父子关系的Codeigniter。
它位于here.
答案 2 :(得分:0)
我不知道你使用哪个CI版本但是在V3的情况下你可以尝试以下内容:
在您的模型中:
<?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();
}
}
并在您的控制器中
<?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);
}
}
并在您的视图中
<?php
echo $objAgent->Name;
?>
Childs
<?php
foreach($objAgent->getChilds() AS $key => $objChild)
{
print_r($objChild);
}