Обратная связь один к одному в Laravel

В предыдущих уроках у нас была связь один к одному между постом и миниатюрой. Такая связь может трактоваться двояко: каждый пост имеет свою миниатюру или каждая миниатюра принадлежит посту.

Разница между имеет и принадлежит проявляется в том, в какой таблице находится поле связи. В нашем случае поле связи - post_id, и находится оно таблице с миниатюрами.

Это значит, что пост имеет миниатюру. Но и миниатюра в свою очередь принадлежит посту. На практике это означает, что можно получить миниатюру вместе с ее постом. Для этого нужно связать модель миниатюр с моделью постов через отношение belongsTo. Давайте сделаем это:

app/Models/Thumbnail.php<?php
  class Thumbnail extends Model
  {
    public function post()
    {
      return $this->belongsTo(Post::class);
    }
  }
?>

После этого при получении миниатюры можно будет получить ее пост:

app/Http/Controllers/ThumbnailController.php<?php
  class ThumbnailController extends Controller
  {
    public function show()
    {
      $thumbnail = Thumbnail::find(1);
      dump($thumbnail);
      dump($thumbnail->post);
    }
  }
?>

Давайте получим какое-нибудь поле связанного поста:

app/Http/Controllers/ThumbnailController.php<?php
  class ThumbnailController extends Controller
  {
    public function show()
    {
      $thumbnail = Thumbnail::find(1);
      dump($thumbnail->post->title);
    }
  }
?>
Задание 1

Свяжите таблицы с юзерами и профилями отношением belongsTo.

Задание 2

Получите профиль вместе с его юзером.

Задание 3

Получите все профили вместе с их юзерами. Выведите их в представлении в виде HTML таблицы.