Попытка получить свойство необъекта laravel 5.4

У нас есть проект, обновленный с laravel v 5.1 до v 5.4, и многие проблемы и ошибки появляются после обновления в любом случае, есть этот

Trying to get property of non-object for index.blade.php

и это код

<tbody>
 @foreach($routeFEmails as $routeFEmail)

 <tr>
 <td>{{ $routeFEmail->id }}</td>
 <td>{{ $routeFEmail->routeF->id }} ({{ $routeFEmail->routeF->vessel_name }})</td>
 <td>{{ $routeFEmail->creator->type }}:&nbsp;{{ $routeFEmail->creator->first_name }} {{ $routeFEmail->creator->last_name }}</td>
 <td>{{ $routeFEmail->status }}</td>
 <td>{{ $routeFEmail->created_at->format('Y-m-d H:i') }}</td>
  </tr>
  @endforeach
 </tbody>

я проверяю модель, и никакое значение из того, что упоминание равно нулю

я тоже

php artisan cache:clear 
php artisan route:clear 
php artisan view:clear 

и это функция в со-контроллере

public function index()
{
    $routeFEmails = RouteFEmail::orderBy('id', 'desc')->paginate(10);
    return view('backend.route_f_emails.index', compact('routeFEmails'));
}

Как я могу это исправить?:(

2 ответа

Попытка получить свойство для необъектного означает, что $routeFEmail не является объектом, а некоторые его свойства, такие как id, равны нулю. Также часть

$routeFEmail->routeF

может быть нулевым (я думаю, что проблема есть), вы можете пропустить это с

@if( !is_null($routeFEmail->routeF) )
write something 
@endif

или даже дд, если это ноль

Ваша проблема с compact()Возвращаемым типом compact() является array [Read Here], поэтому при передаче compact('routeFEmails') это преобразование объекта в массив.

В index.blade.php вы получаете доступ к значениям $routeFEmails как объекта. Таким образом, вы можете попробовать одно из следующих решений.

Решение 1

Написать <td>{{ $routeFEmail['id'] }}</td> вместо <td>{{ $routeFEmail->id }}</td>

ИЛИ ЖЕ

Решение 2

Написать

return view('backend.route_f_emails.index', ['routeFEmails'=>$routeFEmails]);

вместо

return view('backend.route_f_emails.index', compact('routeFEmails'));
Другие вопросы по тегам