hakanylmz Anladığım kadarıyla bir hiyerarşiye ihtiyacınız yok aslında. İlk başta öyle düşünmüştüm.
Yapmanız gereken; User ve Profession şeklinde iki modeliniz olsun. Bu modeller içinde ilişki tanımlayacaksınız:
app/Models/User.php
public function profession(): BelongsTo
{
return $this->belongsTo(Profession::class, 'meslek_id')
->withDefault();
}
public function parentProfession(): HasOneThrough
{
return $this->hasOneThrough(Profession::class, Profession::class, 'meslek_id', 'ust_meslek_id')
->withDefault();
}
app/Models/Profession.php
public function users(): HasMany
{
return $this->hasMany(User::class, 'meslek_id');
}
public function parentProfession(): BelongsTo
{
return $this->belongsTo(Profession::class, 'ust_meslek_id')
->withDefault();
}
Artık şu şekilde sorgulamalar ve işlemler yapabilirsiniz:
$user = User::find(1):
$profession = $user->profession
$parentProfession = $user->parentProfession;
// ya da
$parentProfession = $user->profession->parentProfession;
$profession = Profession::find(1);
$users = $profession->users;
$parentProfession = $profession->parentProfession;
$user = User::find(1):
$profession = Profession::find(1);
// Kullanıcıya meslek atama
$user->profession()->associate($profession);
vs...
https://laravel.com/docs/8.x/eloquent-relationships
https://laravel.com/docs/8.x/eloquent-relationships#eager-loading