在我的实时环境最近更新后,我收到了一些关于未找到的区分大小写的模型名称的错误,但我很快修复了这些错误。现在,在此更新后大约一周后,我突然收到有关非对象"属性的错误"在尝试访问相关对象时。 这是我的模特:
<?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函数。但是在现场,无论如何我都会有同样的行为。
答案 0 :(得分:1)
尝试将类名更改为首字母大写,然后更改为App\Products
。
答案 1 :(得分:1)
问题是我的订单表中有一些从产品表中删除的产品条目。结果是返回了一个数组而不是一个对象。删除/编辑有问题的行使代码再次像以前一样工作。
答案 2 :(得分:0)
当get_product()函数返回值null时,您将收到非对象错误。在调用属性之前,尝试添加一个条件来检查null值。