TGViewer
Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter @phpproglib · 10.5K subscribers
Post #6354 2K
🐘 PHP для начинающих (и напоминание для опытных)

🔹 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_азбука
  • 👍 5
  • 🔥 1
More from @phpproglib
  1. Sep 21, 2026⚡️ PHP 8.6 выйдет 19 ноября 2026 года. Сейчас версия находится в beta. Самые заметные изме…
  2. Sep 20, 2026❓ Какие существуют проблемы в многопоточной среде? Основные проблемы многопоточности: 1️⃣…
  3. Sep 19, 2026🌞 В Symfony 8.2 появилось 29 новых Bundle — теперь компоненты вроде Mailer, Messenger и C…
  4. Sep 19, 2026А вы уже забрали свой подарок ко Дню программиста? К вашему профессиональному празднику Tp…
  5. Sep 18, 2026🐸 Библиотека пхпшника
  6. Sep 17, 2026🛠 `str_contains` и семья: проверяем строки без ловушек Проверка через strpos годами путал…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →