[英]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.