Получите отношение morphMany к модели от пользователя - PullRequest
0 голосов
/ 30 мая 2018

Допустим, у меня есть следующее:

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

class User extends Authenticatable 
{

  public function posts()
  {
    return $this->hasMany('App\Models\Socials\Post');
  }
}

Модель сообщения;

class Post extends Model 
{

  public function comments()
  {
    return $this->morphMany('App\Models\Socials\Comment', 'commentable');
  }

Модель комментария;

class Comment extends Model
{
    public function commentable()
    {
     return $this->morphTo();
    }

Когда я использовал $user = User::find($id); и $user->posts(), он возвращает все сообщения пользователя, но если я использовал этот метод $user->posts()->comments() Он возвращает это сообщение Method Illuminate\Database\Query\Builder::comments does not exist.

Вопрос в том, как мне получить все комментарии пользователя к указанному посту?

1 Ответ

0 голосов
/ 30 мая 2018

Изменение:

$user->posts()->comments();

на:

$user->posts->pluck('comments')->collapse();

Сам метод возвращает экземпляр построителя запросов Eloquent, позволяющий вам добавлять или редактировать запрос, если хотите.Однако, если вы не хотите редактировать запрос, вы можете получить доступ к отношениям как к свойствам, и Laravel будет обрабатывать запрос.

По сути, $user->posts фактически превращается в $user->posts()->get() на заднем плане.

Кредит @ JonasStaudenmeir.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...