Laravel'de BelongsTo ve HasOne İlişkisi
BelongsTo İlişkisi Nedir?
Laravel'de BelongsTo
ilişkisi, bir modelin başka bir modelle "bir" ilişkisi olduğunu ifade eder. Yani, bir kayıt başka bir kayda ait olabilir. Örneğin, bir makalenin bir yazarı olabilir. Bu ilişki, iki tablo arasında "bir" ilişkisi kurar.
HasOne İlişkisi Nedir?
HasOne
ilişkisi, BelongsTo
'nin tam tersidir. Bu ilişki, bir modelin başka bir modelle "bir" ilişkisi olduğunu ifade eder. Ancak, HasOne
ilişkisi, bir kaydın sadece bir başka kayda ait olduğunu belirtir.
Kullanım Örnekleri
BelongsTo İlişkisi Örneği:
<?php
// Article Model
class Article extends Model
{
public function user()
{
return $this->belongsTo(User::class);
}
}
// User Model
class User extends Model
{
// ...
}
?>
Veritabanında, articles
tablosu şu şekilde görünebilir:
CREATE TABLE articles (
id INT PRIMARY KEY,
title VARCHAR(255),
content TEXT,
user_id INT, -- Bu sütun, User modelindeki id sütunu ile ilişkilidir
created_at TIMESTAMP,
updated_at TIMESTAMP
);
HasOne İlişkisi Örneği:
<?php
// User Modeli
class User extends Model
{
public function phone()
{
return $this->hasOne(Phone::class);
}
}
// Phone Modeli
class Phone extends Model
{
// ...
}
?>
Veritabanında, phones
tablosu şu şekilde görünebilir:
CREATE TABLE phones (
id INT PRIMARY KEY,
number VARCHAR(20),
user_id INT, -- Bu sütun, User modelindeki id sütunu ile ilişkilidir
created_at TIMESTAMP,
updated_at TIMESTAMP
);
Yukarıdaki örneklerde, belongsTo
ilişkisi ile user_id
sütunu, hasOne
ilişkisi ile de user_id
sütunu diğer tablodaki ilgili id
sütunu ile ilişkilendirilmiştir. Bu şekilde Laravel, ilişkili modeller arasında bağlantı kurar ve foreign key'leri kullanarak doğru veri ilişkilerini sağlar.