Laravel 5 - 访问多对多关系的特定模型

Laravel 5 - access specific model on many to many relationship

所以我正在学习 Laravel 5 并且有一个关于多对多关系的问题。我正在构建一个推特克隆,并希望允许创建推文和转推。我的数据库设置是(如 laravel 文档中概述的枢轴 table)

users
  - id
  - name

tweets
  - id
  - content

tweet_user
  - tweet_id
  - user_id

我的 UserTweet 模型有适当的 belongsToMany 调用来连接这些关系。

来自 User.php

public function tweets() {
    return $this->belongsToMany('App\Tweet');
}

来自Tweet.php

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

最后,我的 tweet_user 枢轴 table 看起来像:

|--------------------|
| tweet_id | user_id |
|--------------------|
| 1        | 1       |
|--------------------|
| 1        | 2       |
|--------------------|

为了显示推文,我这样做:

return view('tweets.index')->withTweets(App\Tweet::all())

并将其传递给我的观点。在这一点上一切都很好,我的视图将显示 2 条推文(如上面的 tweet_user 枢轴 table 所示)然后我的视图有:

@foreach($tweets as $tweet)
   {{ $tweet->user->name }} <-issue is here
   {{ $tweet->content }} <- all good here
@endforeach

因为我有这个设置,所以 $tweet->user 是拥有这条推文的所有用户的数组/集合。如何在上面的循环中访问当前推文的实际用户模型(第一个循环的 IE 用户 ID 1,第二个循环的用户 ID 2)?我确定我遗漏了一些简单的东西,但我需要推文/用户模型上的其他访问器吗?我最初将此设置设置为 hasMany / belongsTo 关系,因此上面的循环工作正常。感谢您的帮助!

如果是多对多,我会将 $this->user 重命名为 $this->users,只是为了便于阅读。

然后是这样的:

@foreach($tweets as $tweet)
   @foreach($tweet->users as $user)
      {{ $user->name }}
   @endforeach
   {{ $tweet->content }} <- all good here
@endforeach

这是因为您设置了多对多关系。您可能希望按顺序排序或以某种方式标记原始用户。