我已经使用 codeigniter 作为前端 mysql 作为后端来创建MLM项目。
我在这里怀疑孩子的数目。
这是我的表流:
这是我的树流:
这是我的查询方式,如何获取多层次营销(树)子计数。
例如: 主用户有14个子用户。
我尝试了以下代码:
查看:
$product2_users = $this->login->getProduct2Users($top_id);
型号:
public function getProduct2Users($top_id)
{
$count = 0;
$this->db->select('id');
$this->db->from('member');
$this->db->where('sponsor', $top_id);
$first_child = $this->db->get();
foreach($first_child->result_array() as $f_child)
{
$f_child_id[] = $f_child['id'];
if(isset($f_child_id))
{
$this->db->select('id');
$this->db->from('member');
$this->db->where('sponsor', $f_child_id);
$second_child = $this->db->get();
}
}
echo'<pre>';print_r($second_child->result_array());exit;
return $first_child->result_array();
}
答案 0 :(得分:1)
如果您的命名约定与树结构相同,请尝试执行此操作。
/*if finding A's child so write A_% and if A1's child then A1_% */
$query = $this->db->select('*')->from('member')->where("name LIKE 'A_%'")->get();
$query->num_rows();
答案 1 :(得分:1)
如果您真的想要一个解决方案,则必须以递归方式进行
类似以下的东西应该起作用
public function getCountChilds($id)
{
$count = 0;
$query = $this->db
->select('id')
->from('member')
->where('sponsor', $id)
->get();
if ($query->num_rows() > 0)
{
foreach($query->result() AS $objChild)
{
$count += $this->getCountChilds($objChild->id);
++ $count;
}
}
return $count;
}