Несколько обратных связей один ко многим в Laravel

Может такое быть, что одна таблица имеет несколько связей. Давайте посмотрим, как действовать в таком случае.

Пусть у нас есть таблица с постами:

posts

  • id
  • title

Таблица с юзерами:

users

  • id
  • name

И пусть у нас есть таблица с комментами, в который каждый коммент связан со своим постом и со своим юзером:

comments

  • id
  • text
  • post_id
  • user_id

Давайте пропишем эту связь в модели для комментов:

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

Теперь при получении коммента мы можем получить его пост и его юзера:

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

Сделайте следующие таблицы:

cities

  • id
  • name

positions

  • id
  • name

users

  • id
  • name
  • city_id
  • position_id
Задание 2

Сделайте модель с юзерами, модель с городами и модель с должностями.

Задание 3

Свяжите юзера с его городом и с его должностью отношением belongsTo.

Задание 4

Получите юзера вместе с его городом и должностью.