如何获得多层次营销(树)子计数

时间:2018-09-19 09:36:16

标签: mysql codeigniter

我已经使用 codeigniter 作为前端 mysql 作为后端来创建MLM项目。

我在这里怀疑孩子的数目。

这是我的表流:

enter image description here

这是我的树流:

enter image description here

  

这是我的查询方式,如何获取多层次营销(树)子计数。

例如: 主用户有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();
    }

2 个答案:

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