🔹 Eloquent Relationships или почему связи это не страшно
Большинство новичков понимают модели. Один класс — одна таблица, всё логично.
Страшно становится, когда таблицы нужно связывать между собой. В голове сразу всплывают JOIN-ы из курса по SQL, и хочется закрыть ноутбук.
Eloquent это скрывает. Ты просто описываешь словами, как модели связаны друг с другом.
// User.php
public function posts(): HasMany
{
return $this->hasMany(Post::class);
}
// Post.php
public function user(): BelongsTo
{
return $this->belongsTo(User::class);
}
Всё. Laravel сам догадается, что posts.user_id ссылается на users.id — по соглашению об именовании. Теперь можно писать читаемый код:
// Все посты пользователя
$user->posts;
// Автор конкретного поста
$post->user->name;
// Посты только опубликованные
$user->posts()->where('published', true)->get();
Никаких JOIN-ов вручную. Никакого WHERE user_id = ?. Ты работаешь с объектами, а не с сырым SQL.
Три связи, которые покрывают 90% случаев
▪️ hasMany — у пользователя много постов
▪️ belongsTo — пост принадлежит пользователю
▪️ belongsToMany — пост имеет много тегов, тег стоит на многих постах (промежуточная таблица)
Связи — это просто способ сказать Laravel: «вот как мои таблицы соотносятся». Дальше он разберётся сам.
Библиотека пхпшника
#php_азбука