Laravel:雄辩的关系突然停止了工作

时间:2016-08-10 05:16:58

标签: php laravel eloquent

在我的实时环境最近更新后,我收到了一些关于未找到的区分大小写的模型名称的错误,但我很快修复了这些错误。现在,在此更新后大约一周后,我突然收到有关非对象"属性的错误"在尝试访问相关对象时。 这是我的模特:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class products extends Model {
    /**
     * The table associated with the model.
     *
     * @var string
     */
    protected $table = 'v_products_2';
}

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class order extends Model {
    /**
     * The table associated with the model.
     *
     * @var string
     */
    protected $table = 'v_customers_orders';

    public function getProduct (){
        return $this->belongsTo('App\products', 'product_id', 'product_id');
    }   
}

我正确地设置了我的路线和中间件,在尝试访问这样的属性后会导致&#34;非对象&#34;错误:

echo $orders->getProduct->product_id;

然而,这个完全相同的代码就像2个小时前一样工作,并且已经工作了几个月了。除此之外,此代码也适用于我的Windows Homestead环境,这使我很难对其进行故障排除。我能够在本地重现此错误的唯一方法是从模型中删除getProduct函数。但是在现场,无论如何我都会有同样的行为。

3 个答案:

答案 0 :(得分:1)

尝试将类名更改为首字母大写,然后更改为App\Products

答案 1 :(得分:1)

问题是我的订单表中有一些从产品表中删除的产品条目。结果是返回了一个数组而不是一个对象。删除/编辑有问题的行使代码再次像以前一样工作。

答案 2 :(得分:0)

当get_product()函数返回值null时,您将收到非对象错误。在调用属性之前,尝试添加一个条件来检查null值。