Я бы подумал, что вы представляете это так же, как и любые другие отношения «многие ко многим»;единственное отличие состоит в том, что одна и та же модель User
поддерживает как отношение по умолчанию, так и обратное соотношение:
public function parents(){
return $this->belongsToMany(User::class, "users_users", "user_id", "parent_id");
}
public function children(){
return $this->belongsToMany(User::class, "users_users", "parent_id", "user_id");
}
Примечание: у меня может быть user_id
и parent_id
в обратном направлении, но это можно легко отрегулировать.
Единственный улов, который я вижу в этом, - это попытка рекурсивно получить детей от детей, если это вызывает озабоченность, но в остальном это должно работать для базового «многие ко многим».