Laravel 5.8 Ошибка красноречивой модели - PullRequest
0 голосов
/ 06 апреля 2019

У меня есть отношения между двумя моделями, Пользователем и Подписчиком. Пользователь имеет много подписчиков, и подписчик принадлежит пользователю. В моей таблице последователей в базе данных у меня есть два столбца: follower_id и follow_id. Оба эти столбца ссылаются на столбец идентификатора в таблице пользователей.

Таблица моих подписчиков и пользователей

followers

      id
      follower_id
      following_id

 users
      id
      name
      username

Модель пользователя

public function followers(){
    return $this->hasMany('App\Follower', 'follower_id');
}

public function followings(){
    return $this->hasMany('App\Follower', 'following_id');
} 

Модель последователя

 public function user(){
       return $this->belongsTo('App\User');
    }

В тестовом контроллере я делаю это:

$followed = Follower::find(2);

Здесь я хотел бы выбрать один из столбцов follower_id или follow_id и получить доступ к пользователю, которому принадлежит данная строка, с помощью $ follow-> user-> name. Как бы я пошел об этом? Поскольку мне нужно выбрать столбец перед доступом, я немного запутался. Что я могу сделать, чтобы получить доступ к нужным мне данным?

1 Ответ

0 голосов
/ 06 апреля 2019

Ваша таблица должна быть:

followers

      id
      follower_id
      following_id
      user_id

 users
      id
      name
      username

В вашей модели Подписчика:

public function user()
{
    return $this->hasMany(Follower::class, 'user_id');
}

В вашей Пользовательской модели:

public function follower()
{
    return $this->belongsTo(User::class, 'user_id');
}

Тогда вы можете сделать запрос какэто:

$follower = Follower::with('user')->findorFail(2);
$user_name = $follower->user->name;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...