下面我有两个模型,它们具有1对1的关系。他们的工作就像一个魅力,但突然(可能因为数据库中的一些更新(添加了2个新列))它停止工作。我只是在尝试获得付款时才会收到错误。例如。
$fare->payment->amount;
给出错误:尝试获取非对象的属性 当我使用DD();调试我看到以下显示。 Pastebin
有人知道该怎么做或如何解决这个问题?
下面你可以找到模型
class Fare extends Eloquent {
protected $table = 'fare';
public function payment()
{
return $this->hasOne('Payment');
}
public function email()
{
return $this->email;
}
public function getTimeagoAttribute()
{
$date = Carbon::createFromTimeStamp(strtotime($this->created_at))->diffForHumans();
return $date;
}
}
class Payment extends Eloquent {
protected $table = 'payment';
public function fare()
{
return $this->belongsTo('Fare');
}
public function status()
{
return $this->belongsTo('Status');
}
public function scopeApproved($query)
{
return $query->where('status', 1);
}
public function scopeDeclined($query)
{
return $query->where('status', 2);
}
public function getTimeagoAttribute()
{
$date = Carbon::createFromTimeStamp(strtotime($this->created_at))->diffForHumans();
return $date;
}
}
答案 0 :(得分:1)
错误如下:
Trying to get property of non-object
当您从payment
访问Fare
时,它会上升:
$fare->payment->amount;
根据您的dd()
结果,您有一些没有相关Fare
的{{1}}个对象:
Payment
因此,在返回的集合中,您有一些没有相关// In your pastebin you have similar entries
["payment"]=>
NULL
的{{1}}个对象,因此出现此错误,请确保Fare
对象具有相关的Payment
对象在尝试访问之前。你可以尝试这样的事情:
Fare
答案 1 :(得分:1)
既然它有效,我想你加了一个"付款"您的表中的列,因此$fare->payment
您可以访问属性而不是关系,您有3个选择:
$fare->payment()->first()->amount