繁体   English   中英

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

[英]Laravel: Eloquent relations suddenly stopped working

在对实时环境进行了最新更新之后,我发现了一些关于区分大小写的模型名称的错误,但我很快就解决了这些问题。 现在,在此更新大约一周后,在尝试访问相关对象时,我突然收到有关“非对象属性”的错误。 这是我的模型:

<?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');
    }   
}

我已经正确设置了路由和中间件,并且尝试访问此类属性后将导致“非对象”错误:

echo $orders->getProduct->product_id;

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

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

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

当您的get_product()函数返回值null时,将出现非对象错误。 尝试在调用属性之前添加条件以检查null值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM