非典型的试图获得非对象的财产......?

时间:2016-01-18 04:00:17

标签: php laravel laravel-5 relationship laravel-5.2

我在使用Laravel 5时遇到了问题。我得到了一个

  

尝试获取非对象的属性

当我尝试访问刀片中的雄辩属性时出现

错误。

但这不正常,因为这很好用:

{{ dd($item->relation->property) }}

虽然这会引发错误:

{{ $item->relation->property }}

那里发生了什么?我已经尝试清除缓存,我也删除了编译后的视图。

更新19.01。美国东部时间14:24

这是我的数据库的内容(我的项目转储中的所有项目):

它在ID22停止计数:

[2016-01-19 13:17:34] local.INFO: 10  
[2016-01-19 13:17:34] local.INFO: 11  
[2016-01-19 13:17:34] local.INFO: 12  
[2016-01-19 13:17:34] local.INFO: 19  
[2016-01-19 13:17:34] local.INFO: 21  
[2016-01-19 13:17:34] local.INFO: 22  
[2016-01-19 13:17:34] local.ERROR: ErrorException: Trying to get property of non-object in /home/vagrant/Code/Emerald/storage/framework/views/e18baccf6428ca42183f454a47f2cc9156379826.php:22

在访问此对象的任何其他属性之前,我执行了Log :: info($ item-> id)。

3 个答案:

答案 0 :(得分:1)

我终于明白了!与我的项目#22(错误发生的地方)的关系被软删除但现在我做了这一切,一切正常了:)

$item->relation()->withTrashed()->get()->first()->property

答案 1 :(得分:0)

你是否可以在循环中执行此操作,因此dd()在第一次迭代后完成执行?

答案 2 :(得分:0)

当您使用$item->relation时,可能发生的事情是您的关系返回空值。当Laravel中的查询从数据库中得不到任何内容时,您会得到一个null结果,其中没有->property可以抓取。

您可以通过将$item->relation值记录到某个本地日志文件中来进行验证,然后将其打印到尾部,或者通过循环中的(new \Illuminate\Support\Debug\Dumper)->dump($item->relation);将其打印到屏幕上。