caglar_kocak Bunları zaten biliyorum benim sorduğum şey çalışma mantığı. Yukarıdaki attığım kodun üzerinden anlatayım tekrar.
$comment = Comment::find(1);
$user = $comment->user;
İlk satırda arka planda şu şekilde bir sql sorgusu çalıştırılıyor: "SELECT * FROM comments WHERE id=1" değil mi?
Biz şu anda o comment kaydının user_id sini ve diğer verilerini elde ettik. Ama ikinci satırda bir de users tablosundaki user verisine erişiyoruz. user_id değerimizin 2 olduğunu farzedersek, ikinci satırda da tekrar şöyle bir sorgu mu çalıştırılıyor? "SELECT * FROM users WHERE id=2"
Sql bilgim sınırlı olduğu için yorumum yanlış olabilir ama demek istediğim şu, eğer biz comments migrationındaki user_id ile users tablosundaki id yi ilişkilendirmiş olsaydık, laravel yukarda anlattığım şekilde iki sorgu göndermek yerine, ilk satırda hem comment hem de user verisini çekip tek sorguda iki işlemi de halletmiş mi olacaktı?
Veya bu iki kolonun ilişkilendirmesini tanımlamasaydık söylediğim iki sorguyu da çalıştıracak mıydı?
Yoksa bizim ilişkiyi tanımlayıp tanımlamamamızdan bağımsız bir şekilde her halükarda iki sorguyu da çalıştırıyor mu?
Eğer son söylediğim gerçekleşiyorsa performans açısından büyük kayıp olurdu. Bunu öğrenmeye çalışıyorum.
Biraz karışık oldu ama umarım anlatabilmişimdir.