Я пытался следить за некоторыми онлайн-сайтами о том, как сделать Treeview в PHP. У меня это работает, но у меня есть тонна MySQL Calls, чтобы заставить его работать. Я новичок в PHP, и я знаю, что должен быть лучший способ сделать это. Любая помощь будет замечательной.
$childid = '';
$parent = DB::table('ezygold_users')->join('ezygold_usersplan', 'ezygold_users.id', '=', 'ezygold_usersplan.idusrpp')->where('id', '=', $id->users_id)->select('id', 'fullname', 'idref', 'idspr')->get();
foreach ($parent as $parentout) {
echo $parentout->fullname;
}
echo '<ol>';
foreach (DB::table('ezygold_users')->join('ezygold_usersplan', 'ezygold_users.id', '=', 'ezygold_usersplan.idusrpp')->where('idref', '=', $parentout->id)->select('id', 'fullname', 'idref', 'idspr')->get() as $child) {
echo '<li>' . $child->fullname . '</li>';
$childid = $child->id;
echo '<ol>';
foreach (DB::table('ezygold_users')->join('ezygold_usersplan', 'ezygold_users.id', '=', 'ezygold_usersplan.idusrpp')->where('idref', '=', $childid)->select('id', 'fullname', 'idref', 'idspr')->get() as $child) {
echo '<li>' . $child->fullname . '</li>';
$childid = $child->id;
echo '<ol>';
foreach (DB::table('ezygold_users')->join('ezygold_usersplan', 'ezygold_users.id', '=', 'ezygold_usersplan.idusrpp')->where('idref', '=', $childid)->select('id', 'fullname', 'idref', 'idspr')->get() as $child) {
echo '<li>' . $child->fullname . '</li>';
$childid = $child->id;
echo '<ol>';
foreach (DB::table('ezygold_users')->join('ezygold_usersplan', 'ezygold_users.id', '=', 'ezygold_usersplan.idusrpp')->where('idref', '=', $childid)->select('id', 'fullname', 'idref', 'idspr')->get() as $child) {
echo '<li>' . $child->fullname . '</li>';
$childid = $child->id;
}
echo '</ol>';
}
echo '</ol>';
}
echo '</ol>';
}
echo '</ol>';
РЕДАКТИРОВАТЬ:
Я дошел до этого, но возвращение занимает от 30 до 45 секунд. Вы понимаете почему?
function getTree($id)
{
$child = DB::table('ezygold_users')->join('ezygold_usersplan', 'ezygold_users.id', '=', 'ezygold_usersplan.idusrpp')->select('id', 'fullname', 'idref', 'idspr', 'idusrpp')->get();
echo '<ul>';
foreach ($child as $childout) {
$rollup = DB::table('ezygold_users')->where('id', '=',$childout->idspr)->first();
if ($childout->idref == $id) {
echo '<li>' . $childout->fullname . '<br>' . '( ' . $rollup->fullname . ' )</li>';
$this->getTree($childout->id);
}
}
echo '</ul>';
return;
Задача ещё не решена.
Других решений пока нет …