试图获得非物体laravel 5.4的属性

时间:2017-07-26 09:45:18

标签: laravel-5 laravel-5.1 laravel-5.4 laravel-upgrade

我们有一个项目从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 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'));
}

我如何修复此问题? :(

2 个答案:

答案 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,如果它为空