gundogduyakici users tablosuna parent_id gibi bir alan eklerseniz adjacency list olayına girmiş olursunuz, yani hiyerarşik veri. Bunu forumda aratabilirsiniz.
Benim şöyle bir önerim var: Takım;
Kullanıcıları kesinlike ayrı bir tabloda tutmayacaksınız. Bunu forumda anlattım. Tutarsanız sorumluluğunu da üstünüze almanız gerekecek. En kolay yol her zaman users tablosunda tutmak.
Takım oluşturacaksınız. Bu takımların yöneticileri ve üyeleri olacak. Tek pivot tablo ile de yapılabilir ama karışır; basit olması için iki pivot daha iyi. Bu durumda 4 tablo olmuş oluyor:
users
teams
admin_team
member_team
Kullanıcı bir takıma üye de olabilir o takımda yönetici de olabilir. Bir üye birden fazla takımda da yer alabilir bir takımın birden fazla yöneticisi de olabilir.
User BelongsToMany Team managedTeams() Bu, kullanıcının yönettiği takımlar. Bu takımın altındaki üyeler bu kullanıcının alt kullanıcıları olmuş oluyor. admin_team pivot tablosunu kullanacak.
User BelongsToMany Team teams() Bu, kullanıcının üyesi olduğu takımlar. Bu takımdaki diğer üyeler bu kullanıcının takım arkadaşı olmuş oluyor. member_team pivot tablosunu kullanacak.
Team BelongsToMany User admins() Bu, takımın yöneticileri. Bir üye mesela kendi ait olduğu bir takımdan yola çıkıp admin ilişkisine bakarsa yöneticilerini yani üst kullanıcıları bulmuş olacak. admin_team pivot tablosunu kullanacak.
Team BelongsToMany User members() Bu, takımdaki üyeler. member_team pivot tablosunu kullanacak.
// A Takımı üyeleri
$hannibal = User::find(1);
$murdock = User::find(2);
$baracus = User::find(3);
$faceman = User::find(4);
// A Takımı
$theATeam = Team::find(1);
// Hannibal A takımını yönetir
$hannibal->managedTeams()
->attach($theATeam);
// Ayrıca o da takımın bir üyesidir.
$theATeam->members()
->attach($hannibal);
// Diğer üyeler
$theATeam->members()
->attach([
$murdock,
$baracus,
$faceman,
]);
$theATeam = Team::find(1);
$admins = $theATeam->admins; // ['hannibal']
$members = $theATeam->members; // ['hannibal', 'murdock', 'baracus', 'faceman']
Bunun güzel tarafı takımlara da ayrı yetki verebilirsiniz.