获取上线的所有mlm下线(php)

时间:2017-06-01 09:28:57

标签: php mysql binary-tree mlm

我希望在二叉树中得到父亲的所有下线,每个父亲都有左右手臂,每个手臂都有左右手臂等。 like the following image。 在我的数据库中,我有一个名为users的表,每个用户都有一个父ID和位置,即L或R.

这是我的功能..但它仍然没有得到所有下线。 like the following image

1 个答案:

答案 0 :(得分:1)

有两件事让我感到高兴:

  1. $this->downline_id_arr参数和$children = array(); foreach($data as $row) { $child_id = $row->id; $children[$child_id] = array(/**/); $children = array_merge($children, $this->getAllDownline($child_id); } return $childen;
  2. 的使用

    考虑一下:

    $i

    现在您不需要$this->downline_id_arr变量或function getAllDownlines($fathers) { $data = "SELECT * FROM users WHERE father_id IN (/*fathers*/)"; $new_father_ids = array(); $children = array(); foreach ($data as $child) { $children[$child->id] = array(/**/); // etc $new_father_ids[] = $child->id; } $children = array_merge($children, $this->getAllDownlines($new_father_ids); return $childen; }

    1. 您逐个查询每个节点。
    2. 请考虑按级别查询:

      $scope.posaljiKontroleru = function () {
          $scope.prosek = {kalorije: 0.0, proteini: 0.0, uh: 0.0, masti: 0.0};
          $http({
              method: 'POST',
              url: 'http://localhost/psi/Pravljenjejela/dodajBazi',
              data: $scope.prosek
          }).then(function (res) {
              $window.location.href = "http://localhost/psi/Pravljenjejela/dodajBazi";
              }, function (err) {
                  console.log(err);
              });
          });
      }
      

      通常较少的查询更快,因此您应该看到更好的性能。