Laravel'de BelongsTo ve HasOne İlişkisi

Laravel'de BelongsTo ve HasOne İlişkisi
Hüseyin Erbayat Okuma Sayısı: 69

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.