Несколько обратных связей один ко многим в Laravel
Может такое быть, что одна таблица имеет несколько связей. Давайте посмотрим, как действовать в таком случае.
Пусть у нас есть таблица с постами:
<$tastr$>
posts
id
title
<-tastr->
Таблица с юзерами:
<$tastr$>
users
id
name
<-tastr->
И пусть у нас есть таблица с комментами, в который каждый коммент связан со своим постом и со своим юзером:
<$tastr$>
comments
id
text
post_id
user_id
<-tastr->
Давайте пропишем эту связь в модели для комментов:
<?php
class Comment extends Model
{
public function post()
{
return $this->belongsTo(Post::class);
}
public function user()
{
return $this->belongsTo(User::class);
}
}
?>
Теперь при получении коммента мы можем получить его пост и его юзера:
<?php
class CommentController extends Controller
{
public function show()
{
$comment = Comment::find(1);
dump($comment);
dump($comment->post);
dump($comment->user);
}
}
?>
Сделайте следующие таблицы:
<$tastr$>
cities
id
name
<-tastr->
<$tastr$>
positions
id
name
<-tastr->
<$tastr$>
users
id
name
city_id
position_id
<-tastr->
Сделайте модель с юзерами, модель с городами и модель с должностями.
Свяжите юзера с его городом
и с его должностью отношением belongsTo.
Получите юзера вместе с его городом и должностью.