Как получить многоуровневый маркетинг (дерево) подсчет детей - PullRequest
0 голосов
/ 19 сентября 2018

Я создаю проект MLM, используя codeigniter в качестве внешнего интерфейса mysql в качестве внутреннего.

Здесь у меня есть сомнения, чтобы получить количество детей.

Это мой поток таблицы:

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 голосов
/ 19 сентября 2018

если вам действительно нужно решение, вы должны делать это рекурсивно

что-то вроде следующего должно работать

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;
}
0 голосов
/ 19 сентября 2018

Попробуйте, если ваше соглашение об именах совпадает с древовидной структурой.

/*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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...