Попытка получить свойство необъекта 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 }}: {{ $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'));