Eloquent підтримує всі поширені типи зв'язків між таблицями, кожен оголошується методом на моделі:
- One To One -
hasOne/belongsTo. Приклад:User↔Profile. - One To Many -
hasMany/belongsTo. Приклад:Post→ багатоComment. - Many To Many -
belongsToManyчерез проміжну (pivot) таблицю. Приклад:User↔Role. - Has One/Many Through - доступ до віддаленого зв'язку через проміжну модель.
- Polymorphic -
morphTo/morphMany: модель належить кільком типам (наприклад,Commentможе належати іPost, іVideo).
Оголошення зв'язку:
class Post extends Model
{
public function comments(): HasMany
{
return $this->hasMany(Comment::class);
}
}
class Comment extends Model
{
public function post(): BelongsTo
{
return $this->belongsTo(Post::class);
}
}
Використання:
$post->comments; // колекція коментарів
$comment->post->title; // зворотний бік
Post::with('comments')->get(); // eager loading проти N+1
Завжди завантажуйте потрібні зв'язки через with(), щоб уникнути проблеми N+1.