【问题标题】:Untypical trying to get property of non-object...?非典型的试图获得非对象的属性......?
【发布时间】:2016-02-08 10:00:15
【问题描述】:

我对 Laravel 5 有疑问。我得到了一个

试图获取非对象的属性

当我尝试访问刀片中的 eloquent 属性时出错。

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

{{ 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)。

【问题讨论】:

  • 该属性的值是多少?

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


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 是的,我正在循环执行此操作。一个 foreach 循环。但是数据库中的每个 Item 都具有该属性。
    • 能否请您发布 dd($items) 的输出,即您正在循环的数组的输出?
    • 我在帖子中添加了这些信息。
    【解决方案3】:

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

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

    【讨论】:

    • 对不起,我不太明白你想告诉我什么。
    • 您的一个关系没有返回任何相关模型。
    猜你喜欢
    • 2019-01-09
    • 1970-01-01
    • 2016-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-14
    相关资源
    最近更新 更多