onuraydin left ve right değerler hiyerarşi güncellendiğinde değişen değerlerdir, her seferinde baştan hesaplanırlar ve size hiyerarşiye küme mantığı ile performanslı bir şekilde ulaşmanızı sağlarlar. O yüzden o alanların başka bir amaçla kullanılmaması ve başka bir alanda da referans olarak gösterilmemeleri lazım. Sizin sponsor dediğiniz aslında kaydın sahibinin id'si, yani genel kullanımı ile parent_id. Bu durumda en son istediğiniz yapıya göre tablo şöyle olmuş oluyor:
+----+-----------+--------------+-----------+------------+
| id | parent_id | name | left_side | right_side |
+----+-----------+--------------+-----------+------------+
| 1 | null | İlk Üye | 1 | 10 |
| 2 | 1 | Hande Yener | 2 | 7 |
| 3 | 2 | Haluk Levent | 3 | 4 |
| 4 | 2 | Tarkan | 5 | 6 |
| 5 | 1 | Bülent Ersoy | 8 | 9 |
+----+-----------+--------------+-----------+------------+
İlk Üye nin tüm alt üyeleri (descendants) sırasıyla kimler?
SELECT * FROM users WHERE left_side > 1 AND right_side < 10 ORDER BY parent_id, left_side
# Hande Yener, Bülent Ersoy, Haluk Levent, Tarkan
İlk Üye'nin direkt sponsor olduğu/getirdiği üyeler (children) sırasıyla kimler?
SELECT * FROM users WHERE parent_id = 1 ORDER BY left_side
# Hande Yener, Bülent Ersoy
Tarkan'ın sponsoru kim?
SELECT * FROM users WHERE id = (SELECT parent_id FROM users WHERE id = 4)
# Hande Yener
Tarkan'ın tüm sponsorları (ancestors) kim?
SELECT * FROM users WHERE left_side < 5 AND right_side > 6 ORDER BY left_side DESC
# Hande Yener, İlk Üye
vs...
Mesela Tarkan'ın kendisi de dahil tüm sponsorlarından bir Bootstrap 5 breadcrumb oluşturmak istersek:
$tarkan = User::find(4);
$breadcrumb = User::where('left_side', '<=', $tarkan->left_side)
->where('right_side', '>=', $tarkan->right_side)
->orderBy('left_side')
->get();
<nav aria-label="breadcrumb">
<ol class="breadcrumb">
@foreach($breadcrumb as $user)
<li @class['breadcrumb-item', 'active' => $loop->last]>
{{ $user->name }}
</li>
@endforeach
</ol>
</nav>
İlk Üye / Hande Yener / Tarkan