我在使用Laravel 5时遇到了问题。我得到了一个
当我尝试访问刀片中的雄辩属性时出现尝试获取非对象的属性
错误。
但这不正常,因为这很好用:
{{ dd($item->relation->property) }}
虽然这会引发错误:
{{ $item->relation->property }}
那里发生了什么?我已经尝试清除缓存,我也删除了编译后的视图。
这是我的数据库的内容(我的项目转储中的所有项目):
它在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)。
答案 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);
将其打印到屏幕上。