私は次の場合に問題があります。ユーザツリー - 特定の段階のすべてのユーザを取得する
私は子ユーザを持つユーザのツリーを再帰関数で取得します。私はアフィリエイトシステムに使用します。
function getChildUsersRecursive($user, $users=array()) {
$em = $this->container->get('doctrine')->getManager();
$user = $em->getRepository('AppBundle:User')->findOneById($user->getId());
$childUsers = $user->getChildUsers();
foreach ($childUsers as $childUser) {
if (!$childUser->getChildUsers()->isEmpty()) {
$users[$childUser->getId()] = $this->getChildUsersRecursive($childUser, $users);
} else {
$users[$childUser->getId()] = array();
}
}
return $users;
}
これは問題なく動作します。結果はこのような配列である:
array:3 [
2 => array:1 [
6 => array:1 [
7 => array:1 [
8 => []
]
]
]
3 => []
4 => []
]
今私は、特定のユーザーのために特定のステージのすべてのユーザーを取得する機能getUsersByStage($ユーザー、$段階)を作成します。
ユーザー3とユーザー4に1人の子ユーザーがいるとします。 getUsersByStage($ user、0)を呼び出すと、最初の次元のすべての項目を取得したい、この例ではユーザー2,3および4です。 getUsersByStage($ user、1)を呼び出すと、ユーザー2、3、および4の直属の子供ユーザーです。
私はあなたが何を意味するか理解してくれることを願っています。私はシンプルだと思うが、私は木の木を見ることができない。
ありがとう、あなたにメリークリスマスがありがとう!
すばやくかわいい解決策をいただきありがとうございます、それは魅力的です! :) –