Это моя таблица БД ИЗОБРАЖЕНИЕ
I Have This code but, the result is this:
array:2 [▼ 3 => array:1 [▼ 1 => [] ] 4 => array:1 [▼ 5 => array:1 [▼ 6 => array:1 [▼ 7 => [] ] ] ] ]
But i need organize the code like this:
array:[
0 => 3, 1 => 1, 2 => 4, 3 => 5, 4 => 6, 5 => 7
]
// actually the parameter id is the session user
public function misSubordinados($id){
$conn = $this->getEntityManager()->getConnection();
$sql = 'SELECT s.id_usuario FROM `sy_supervisores_asesor` AS s
WHERE s.id_supervisor IN (' . implode(',', [$id]) . ')';
$stmt = $conn->prepare($sql);
$stmt->execute();
$total = array();
$result = $stmt->fetchAll();
if (count($result) > 0) {
foreach ($result as $key => $value) {
$total[$value['id_usuario']] = $this->misSubordinados($value['id_usuario']);
}
}
return $total;
}
Потому что у меня есть дочерние элементы таблицы, но у этих детей есть дочерние элементы, и мне нужны идентификаторы иерархии.
Мне очень любопытно, как выглядят данные таблицы ... И какую версию MySQL вы используете ...
Тогда, я думаю, лучше будет справиться с этим в одном запросе MySQL. Покажите нам структуру вашей таблицы с фиктивными данными.
Таблица поднята, например, если мой пользователь id_supervisor 2, покажите мне все строки id_usuarios, а затем покажите мне id_usuarios из этих дочерних строк
Я не уверен, что понимаю. Дайте мне пример ввода и вывода
например, у меня $ id = 2; и на выходе будет $ result = array [3,4], и следующий рекурсивный поиск выполнит итерацию, и в результате будут найдены записи с идентификаторами 3 и 4 и т. д.
я получил спасибо. foreach ($ result as $ key => $ value) {$ total [] = $ value ['id_usuario']; $ total = array_merge ($ total, $ this-> misSubordinados ($ value ['id_usuario'])); }
Тогда почему вы вызываете эту функцию рекурсивно? Вобще
$total[$value['id_usuario']] = $value['id_usuario'];
вместо$total[$value['id_usuario']] = $this->misSubordinados($value['id_usuario']);