我在模型User&amp ;;之间存在多对多的关系。通知。
用户模型:
public function notifications()
{
return $this->belongsToMany('Yeayurdev\Models\Notification', 'notifications_user', 'user_id', 'notification_id')
->withPivot('notifier');
}
通知模型:
public function user()
{
return $this->belongsToMany('Yeayurdev\Models\User', 'notifications_user', 'notification_id', 'user_id');
}
数据透视表:
ID USER_ID NOTIFICATION_ID
1 2 1
在我看来,我为用户检索了所有通知的列表。
@foreach (Auth::user()->notifications as $notification)
{{ $notification->user->username }}
@endforeach
问题在于,当我尝试使用该通知获取用户的用户名时,我收到错误未定义属性:Illuminate \ Database \ Eloquent \ Collection :: $ username。 "用户名"是我的users表上的列,它只是一个字符串。我不知道我哪里出错了,因为如果我只是做了#not; notificatin-> user"它给了我收藏。
谢谢!
答案 0 :(得分:6)
正如你所说,这种关系是多对多关系,因此在你的情况下,$ notification->用户将返回一组User模型,而不是单个用户。如果您只需要第一个用户,那么只需
{{ $notification->user()->first()->username }}
如果您需要为每个通知打印出所有用户,那么您需要在此处循环以浏览所有用户。
@foreach (Auth::user()->notifications as $notification)
@foreach($notification->user as $notificationUser)
{{ $notificationUser->username }}
@endforeach
@endforeach
我建议将user()关系重命名为users()以避免将来混淆。