1

我们有一个从 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>

我检查模型,没有提到的值是 null 没有 NULL

我也做过

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'));
}

我该如何解决这个问题?:(

4

2 回答 2

0

试图获取非对象的属性意味着 $routeFEmail 不是对象,而不是它的某些属性(如 id)为空。还有部分

$routeFEmail->routeF

可能为空(我猜问题在那里)你可以跳过它

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

甚至 dd 如果它为空

于 2017-07-26T12:07:24.770 回答
0

你的问题是compact(),compact() 的返回类型是数组[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'));
于 2017-07-26T10:08:47.130 回答