недопустимый аргумент, предоставленный для foreach() при попытке отобразить данные пользователя auth

#php #laravel

#php #laravel

Вопрос:

здравствуйте, у меня есть две таблицы с такими отношениями: Модель пользователя :

 public function OneYearBodys()
{
    return $this->hasMany('AppOneYearBody');
}
 

Модель OneYearBody :

 public function user()
{
    return $this->belongsTo('AppUser');
}
 

контроллер :

 public function index()
{
    $Bodies = OneYearBody::all();
    return view('OneYear.Body')->with('Bodies',$Bodies);
}
 

Теперь мне нужно отобразить данные для конкретного вошедшего в систему пользователя, который создал эти данные, я уже храню его идентификатор в базе данных
итак, я попробовал это :

 @foreach (Auth::user()->Bodies as $body)
    {{ $body->OneYearBody }}
    <br>
@endforeach
 

но я получаю эту ошибку: invalid argument supplied for foreach()
и когда я отображаю данные для всех пользователей, они работают, когда я делаю это :

 @foreach ($Bodies as $body)
    {{ $body->OneYearBody }}
    <br>
@endforeach
 

Комментарии:

1. Auth::user()->Bodies не возвращает итерацию; вероятно null , поскольку у вас нет a public function bodies() в вашей User модели.

2. да, спасибо, это была проблема

Ответ №1:

Вы объявили связь как public function OneYearBodys() { ... } , поэтому вы должны повторять ее с этим именем. @foreach (Auth::user()->OneYearBodys as $body)

Ответ №2:

Если вы хотите получить доступ к следующему

 @foreach (Auth::user()->Bodies as $body)
                        {{ $body->OneYearBody }}
                        <br>
                        @endforeach
 

Вам нужно будет добавить отношение Тел к вашей пользовательской модели. Или измените тела на OneYearBodys