2016-05-25 7 views
0

У меня есть много-много отношений между моделями Пользователь & Уведомление.Laravel Many To Many Method Issue

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

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 

Проблема заключается в том, что, когда я пытаюсь получить имя пользователя, с этими уведомлениями, я получаю Undefined свойства ошибки: Осветить \ Database \ красноречивого \ Коллекции :: $ имя пользователя. «Username» - это столбец в моей таблице пользователей, который является просто строкой. Я не вижу, где я ошибаюсь, потому что, если я просто делаю «$ notificatin-> user», он дает мне коллекцию.

Спасибо!

+0

Вы пробовали с круглыми скобками '{{$ notification-> user() -> username}}'? – TheFallen

+0

Можете ли вы добавить содержимое '$ notification-> user' к вашему вопросу. Благодарю. – haakym

ответ

6

Как вы сказали, отношения много-ко многим, поэтому пользователь $ notification-> в вашем случае возвращает коллекцию моделей пользователей, а не одного пользователя. Если вам нужен только первый пользователь, то просто сделать

{{ $notification->user()->first()->username }} 

Если вам нужно распечатать все пользователи для каждого уведомления, то вам нужно будет цикл здесь, чтобы пройти через все пользователи.

@foreach (Auth::user()->notifications as $notification) 
    @foreach($notification->user as $notificationUser) 
     {{ $notificationUser->username }} 
    @endforeach 
@endforeach 

Я бы рекомендовал переименовать user() в отношении пользователей(), чтобы избежать путаницы в будущем.

+0

Да, я просто понял это. Должно было заметить сначала, когда я сделал $ notification-> user и просмотрел вывод. Благодаря! –