Лезвие Laravel повторяет значение, которое не работает

у меня две таблицы..

Пользователь и UserMeta
Я установил связь между ними с помощью hasOne().

Модель

public function user_meta() {

    return $this->hasOne('App\UserMeta');

}

Контроллер

public function index() {
    $users = User::orderBy('id', 'desc')->paginate(10);
    return view('users.index')->with('users', $users);
}

Вид

@forelse ($users as $user)

  {{ $user->user_meta->country }}

  @empty
  @endforelse

Эта ошибка возврата

Попытка получить свойство "страна" не-объекта


Но здесь, если я использую dd() вот так.

@forelse ($users as $user)

  {{ dd($user->user_meta->country) }}

  @empty
  @endforelse 

Я вижу, что значение возвращается правильно. США


person Jamille    schedule 21.05.2018    source источник


Ответы (1)


dd остановить выполнение цикла для первого элемента. Если вы используете помощника dump, вы снова увидите эту ошибку после нескольких итераций. Вам нужен чек на null:

@forelse ($users as $user)
   @if(!is_null($user->user_meta))
     {{ $user->user_meta->country }}
   @endif    
@empty
@endforelse  
person yrv16    schedule 21.05.2018
comment
Спасибо @ yrv16, я не знал, что без проверки нуля может появиться ошибка. - person Jamille; 21.05.2018