我们有一个项目从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>
我检查模型,没有提到的值为null no NULL
我也是
php artisan cache:clear
php artisan route:clear
php artisan view:clear
这是co控制器中的一个功能
public function index()
{
$routeFEmails = RouteFEmail::orderBy('id', 'desc')->paginate(10);
return view('backend.route_f_emails.index', compact('routeFEmails'));
}
我如何修复此问题? :(
答案 0 :(得分:0)
问题在于compact()
,compact()的返回类型是数组 [Read Here],因此当您传递compact('routeFEmails')
时,它会将对象转换为数组。
在index.blade.php
中,您正在访问$ routeFEmails的值作为对象。因此,您可以尝试以下解决方案之一。
解决方案1
撰写<td>{{ $routeFEmail['id'] }}</td>
代替<td>{{ $routeFEmail->id }}</td>
OR
解决方案2
写
return view('backend.route_f_emails.index', ['routeFEmails'=>$routeFEmails]);
而不是
return view('backend.route_f_emails.index', compact('routeFEmails'));
答案 1 :(得分:0)
尝试在非对象上获取属性意味着$ routeFEmail不是一个对象,而不是像id这样的某些属性为null。 部分
$routeFEmail->routeF
可能为null(我的猜测问题就在那里) 你可以用
跳过它@if( !is_null($routeFEmail->routeF) )
write something
@endif
或者甚至是dd,如果它为空