【问题标题】:Laravel Eloquent belongsTo: "Trying to get property of non-object" when using without echo/die/var_dumpLaravel Eloquent belongsTo:“尝试获取非对象的属性”在没有 echo/die/var_dump 的情况下使用
【发布时间】:2015-03-02 18:00:49
【问题描述】:

我刚刚开始使用 Laravel 和 Eloquent。 在我的“收据”模型中,我尝试获取有关关系的信息。 只要我使用 var_dump,我就会得到我的信息。 只要我只是返回值以在刀片视图中使用它,我就会得到“尝试获取非对象的属性”。

<?php

class Receipt extends Eloquent  {
    public function businesspartner()  {
        return $this->belongsTo('Businesspartner', 'f_businesspartner_id');
    }

    public function brand()  {
        return $this->belongsTo('Brand', 'f_brand_id');
    }

    public function invoice()  {
        return $this->belongsTo('Invoice', 'f_invoice_id');
    }

    public function name()  {
        $name = '';

        $bp = $this->businesspartner()->first();

        $name = $bp->salutation; // line 21
        $name .= ' ';
        $name .= $bp->lastname_company;


        return $name;
    }
}

错误出现在第 21 行。

当我现在放一个 var_dump($name);die(); 在返回之前,它会打印出我的名字。

这里出了什么问题? :(

问候, 蒂莫

【问题讨论】:

  • 你是在循环中做的,对吧?检查这个stackoverflow.com/a/23911985/784588
  • 太好了。我真的很确定这不能为空,但是当这个错误发生时,我的循环已经提前了一步。通过在我的 $name 构建代码行周围放置 if(count($this-&gt;businesspartner)),我的问题就解决了。我所有的调试输出都只是在前一次迭代中停止了代码,当时一切正常。您能否提供您的提示作为答案,以便我接受此答案并将此主题标记为已解决?
  • 不需要,只需对链接的答案进行投票即可。
  • 对我来说还不可能,首先需要 15 个声望 ;-) 刚刚在这里创建了我的帐户。

标签: laravel eloquent belongs-to relationships


【解决方案1】:

解决方案

正如@Jarek Tkaczyk 所写,我在循环中调用 name() 方法。

在进行调试输出时,我从第一行获取数据。 收到错误时,代码已经在处理第二行,其中外键为空。

将有问题的部分包含在 if(count($this-&gt;businesspartner)) 中很有帮助。

有关这方面的更多信息,Jarek 链接了该帖子:https://stackoverflow.com/a/23911985/784588

【讨论】:

    猜你喜欢
    • 2017-09-02
    • 2014-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-04
    • 1970-01-01
    • 2016-07-18
    • 1970-01-01
    相关资源
    最近更新 更多