雄辩的关系停止了工作,不再起作用了

时间:2014-09-27 18:40:59

标签: php laravel laravel-4

下面我有两个模型,它们具有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;
    }


} 

2 个答案:

答案 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个选择:

  1. 重命名专栏
  2. 使用$fare->payment()->first()->amount
  3. 重命名您的关系