Laravel Türkiye Discord Kanalı Forumda kod paylaşılırken dikkat edilmesi gerekenler!Birlikte proje geliştirmek ister misiniz?

Bir kullanıcı güncelleme formum var. Bire bir ilişki içeriyor.
controller aşağıdaki gibi

public function edit(user $user){
    $user = User::with('userdetay')->find($user->id);
    return view('user.edit', ['user' => $user]);
}

ama formda value="{{ $user->userdetay->meslek }}" hiç bir şey getirmiyor. Neyi yanlış yapıyorum.

    aeneas Eğer $user değişkenine user objesi geliyorsa, tekrar modelden onu çekmenize gerek yok.

    public function edit(user $user){
        $user->load('userdetay');
        return view('user.edit', ['user' => $user]);
    }

    bu şekilde kullanabilirsiniz. Bu tarafta bir hata gözükmüyor, belki return etmeden önce dd($user); ile user değişkeninin içeriğine bakabilirsiniz, acaba userdetay geliyor mu diye. Birde model dosyanızda bire bir ilişkiyi kurduğunuz kodları ve migration dosyanızı atarsanız onlarada bakalım.

      aeneas Öncelikle her ihtimale karşı php artisan optimize:clear yapın, önbelleği temizleyin ve optimize, route:cache, view:cache gibi komutları geliştirme ortamında kullanıyorsanız kullanmayın.

      $user->userdetay->meslek eğer bir şey getirmiyorsa, hata da vermiyorsa;

      1. meslek değeri boş olabilir,
      2. İlişkiyi kurarken withDefault() kullanmış olabilirsiniz, kullanıcının userdetay ilişkisi boş olsa dahi hata vermiyordur, (öteki türlü hata vermemesi için $user->userdetay?->meslek yapmanız lazım)
      3. Yanlış yere ya da yanlış id'ye bakıyor olabilirsiniz.

      Bu şekilde gerekli kontrolleri sağlayın, dump ile değişkeni kontrol edin.

      Ayrıca hem model binding kullanmışsınız hem de tekrar sorgu yapmışsınız, yani 2 kez sorgu yapmışsınız. Eğer route model binding kullanacaksanız şu şekilde de yapabilirsiniz (kursatcanciger dediğine alternatif olarak):

      Route::bind('user_with_detay', function (string $value) {
          return User::with('userdetay')
              ->find($value);
      });
      
      // ya da sadece userdetay ilişkisi olanlara bakılacaksa
      
      Route::bind('user_with_detay', function (string $value) {
          return User::has('userDetay')
              ->with('userdetay')
              ->find($value);
      });
      Route::get('users/{user_with_detay}', [UserController::class, 'edit']);
      public function edit(User $userWithDetay){
          return view('user.edit', [
              'user' => $userWithDetay,
          ]);
      }