Ну, чтобы связать объект класса A с родителем того же класса (A), вам просто нужно установить его в атрибуте:
students
схема таблицы
id
parent_id // <--- this is the key.
name
...
/**
* this addional (and optional) attribute can help you to identify
* if this is the parent of the branch, because with
* this approach you can have grandchilds and so on..
**/
is_root // <---
Тогда в вашей модели:
User.php
public function parent()
{
return $this->belongsTo(User::class, 'parent_id');
}
Теперь, что касается типа пользователя, вы также можете установитьатрибут для определения типа пользователя:
id
parent_id
name
type // <-- this could show the user type: 'student', 'teacher', etc