#php #laravel #algorithm
#php #laravel #алгоритм
Вопрос:
Я попробовал код уровня 1, но не понимаю, как реализовать дальнейшие уровни и получить команду пользователя, мне нужна помощь в этом…
Процесс:
- Пользователь A создаст профиль с помощью прямой регистрации.
- Если пользователь зарегистрирует себя как direct, то он находится на верхнем уровне, тогда пользователь A поделится ссылкой ref, чтобы присоединиться к пользователям, тогда другой пользователь будет добавлен в команду пользователя A как пользователь B.
- Если пользователь B предоставит кому-либо ссылку ref, этот пользователь будет добавлен под пользователем A как пользователь C.
- Таким образом, уровень пользователя A будет равен 1.
Я попытался завершить уровень 1, и код приведен ниже. Нужна помощь на всех других уровнях до 20 и как получить команду пользователя A, B, C … N
Проверьте изображение ниже, чтобы понять древовидную структуру: введите описание изображения здесь
$ref_code_value = Session::get('ref_code');
if($ref_code_value) {
$ref_user = User::where('ref_code', $ref_code_value)->first();
if($ref_user) {
$direct_user = new DirectUser();
$direct_user-> user_id = $ref_user-> id;
$direct_user-> direct_user_id = $user->id;
$direct_user->save();
$ref_user_right = RefUser::whereNull('user_id_right')->latest('updated_at')->first();
$ref_user_left = RefUser::whereNull('user_id_left')->latest('updated_at')->first();
if($ref_user_right){
$ref_user_right-> user_id_right = $user->id;
$ref_user_right->save();
}else{
if($ref_user_left){
$ref_user_left-> user_id_left = $user->id;
$ref_user_left->save();
}
else{
$ref_user_right = RefUser::latest('updated_at')->first();
$ref_users = new RefUser();
$ref_users-> user_id = $ref_user_right-> user_id_right;
$ref_users->user_id_right = $user-> id;
$ref_users->save();
}
}
}
}
else{
$ref_users = new RefUser();
$ref_users-> user_id = $user->id;
$ref_users->save();
}
Комментарии:
1. Вы используете какой-нибудь ORM, например Doctrine?
2. @Cid Нет, я не использую это.
Ответ №1:
-
Вам нужно добавить parent_id (по умолчанию= 0) в пользовательскую таблицу
-
В пользовательской модели вам нужно добавить отношение
protected $with = ['children']; public function children() { return $this->hasMany(User::class, 'parent_id', 'id'); }
Это вернет все дерево в вашем запросе.
И для демонстрации вам нужен рекурсивный метод