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

slhcrj9b  于 2021-06-19  发布在  Mysql
关注(0)|答案(2)|浏览(289)

我创建传销项目使用codeigniter作为前端mysql作为后端。
在这里,我有疑问得到儿童计数。
这是我的表格流程:

这是我的树流:

这是我的查询如何获得多级营销(树)子计数。
例如:主用户有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();
    }
uqzxnwby

uqzxnwby1#

如果命名约定与树结构相同,请尝试此操作。

/*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();
gjmwrych

gjmwrych2#

如果你真的想要一个解决方案,你必须以递归的方式来做
像下面这样的方法应该能奏效

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

相关问题