Здравствуйте, я застрял на попытке получить все комментарии, принадлежащие пользователю, где находится точка опоры между этими двумя моделями. Я не могу показаться, что обворачиваю вокруг себя, или моя схема базы данных может быть просто неправильной. В любом случае, я бы хотел помочь.Застрял на красноречивых отношениях - сводные и полиморфные отношения
В настоящее время мои модели выглядят следующим образом:
User.php
class User extends Model
{
// Grab all the beers that this user has checked in to his personal profile
public function beers()
{
return $this->belongsToMany('App\Beer')->withTimestamps()->withPivot('rating', 'description');
}
}
Beer.php (ось отношения)
class Beer extends Model
{
// polymorphic relationship grab all comments that belong to this beer
public function comments()
{
return $this->morphMany('App\Comment', 'commentable');
}
}
Comment.php (установить как полиморфный)
class Comment extends Model
{
public function commentable()
{
return $this->morphTo();
}
public function user()
{
return $this->belongsTo('App\User');
}
}
В этом коде содержатся все комментарии, принадлежащие записи пива. Это прекрасно работает, потому что $ user-> beers учитывает, что мы имеем дело с определенным профилем пользователя и только находит сводные записи от конкретного пользователя $.
$user = User::find($id);
@foreach($user->beers as $beer)
@foreach($beer->comments as $comment)
{{ $comment }}
@endforeach
@endforeach
К сожалению, комментарии отношение выглядит только на commentable_id и commentable_type из таблицы комментариев и не принимает во внимание текущую user_id (профиль мы сейчас просматриваем), поэтому, когда я смотрю на другой профиль пользователя, имеет такую же пивоваренную комбинацию beer_user в своем профиле, что и те же комментарии.
Как можно связать отношения комментариев с моей моделью Beer.php, чтобы я также учитывал user_id? Очевидно, я уже добавил user_id в мою таблицу комментариев. Я пытался это задать раньше, но надеюсь, что, будучи немного более подробным, на этот раз люди могут помочь мне сейчас, я также знаю, как окончательно сформулировать эту проблему немного лучше.
База данных:
пытались ли вы приковать ваш запрос, такие как $ Пиво-> комментарии() -> где «user_id», «=», $ user-> идентификатор ()? Кстати, вы собираетесь иметь комментарии пользователей? Если вы просто хотите сделать Комментарии доступными для Beers пользователями, вам не нужны отношения морфа. – Bartu
Не понимаю. Какой запрос вы хотите реализовать? – nextt1
Захватите все пиво, принадлежащее конкретному пользователю, а затем возьмите все комментарии, которые помещаются в пиво пользователя. Когда я выполняю запрос из моего примера, он работает, но этот запрос не учитывает комбинацию пивных пиков пива_и_и_и_ид. –