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
我的 User
和 Tweet
模型有适当的 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
这是因为您设置了多对多关系。您可能希望按顺序排序或以某种方式标记原始用户。
所以我正在学习 Laravel 5 并且有一个关于多对多关系的问题。我正在构建一个推特克隆,并希望允许创建推文和转推。我的数据库设置是(如 laravel 文档中概述的枢轴 table)
users
- id
- name
tweets
- id
- content
tweet_user
- tweet_id
- user_id
我的 User
和 Tweet
模型有适当的 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
这是因为您设置了多对多关系。您可能希望按顺序排序或以某种方式标记原始用户。