Не знаком с материализованным путем, нужно будет почитать на досуге. Относительно % - он не нужен, когда мы ищем потомков корневого элемента, если мы ищем потомков пользователя который находится на 3 уровне, разве не нужен будет %?
Ну ок, по уровню можно чуть изменить логику, а что по ресурсозатраности? Я не очень силен в этом, но разве поиск оператором like не будет тяжёлее для бд, по сравнению поиска по индексированному id?
Вот такой рекурсией разве не проще будет? Всего будет 22 запроса в вашем случае
function db_get($query) {
// для получения данных из БД
}
function get_childs($ids) {
$res = [];
$get_ids = db_get('select id from users where parent_id in (' . implode(',', $ids) . ')');
if ($get_ids) {
$res = array_merge($res, $get_ids, get_childs($get_ids));
}
return $res;
}
print_r(get_childs([1]));
Было бы ещё хорошо, если бы промпты к каждому этапу написали
Не знаком с материализованным путем, нужно будет почитать на досуге.
Относительно % - он не нужен, когда мы ищем потомков корневого элемента, если мы ищем потомков пользователя который находится на 3 уровне, разве не нужен будет %?
Ну ок, по уровню можно чуть изменить логику, а что по ресурсозатраности? Я не очень силен в этом, но разве поиск оператором like не будет тяжёлее для бд, по сравнению поиска по индексированному id?
Вот такой рекурсией разве не проще будет? Всего будет 22 запроса в вашем случае