Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 雄辩的关系停止运作,不再';我不再工作了_Php_Laravel_Laravel 4 - Fatal编程技术网

Php 雄辩的关系停止运作,不再';我不再工作了

Php 雄辩的关系停止运作,不再';我不再工作了,php,laravel,laravel-4,Php,Laravel,Laravel 4,我有下面两个模型,它们有一对一的关系。它们工作起来很有魅力,但突然(可能是因为数据库中的一些更新(添加了2个新列))停止了工作。只有当我试图获得作为车费一部分的付款时,我才会出现错误。比如说 $fare->payment->amount; 给出错误:尝试获取非对象的属性 当我使用DD()时;要进行调试,我将看到以下内容 有人知道该怎么做或如何解决这个问题吗 你可以在下面找到模型 class Fare extends Eloquent { protected $table

我有下面两个模型,它们有一对一的关系。它们工作起来很有魅力,但突然(可能是因为数据库中的一些更新(添加了2个新列))停止了工作。只有当我试图获得作为车费一部分的付款时,我才会出现错误。比如说

$fare->payment->amount; 
给出错误:尝试获取非对象的属性 当我使用DD()时;要进行调试,我将看到以下内容

有人知道该怎么做或如何解决这个问题吗

你可以在下面找到模型

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;
    }


} 

错误如下所示:

Trying to get property of non-object
当您从
Fare
访问
payment
时,它会上升,如下所示:

$fare->payment->amount;
{{ $fare->payment ? $fare->payment->amount : '' }}
根据您的
dd()
结果,您有一些
Fare
对象,但没有相关的
Payment

// In your pastebin you have similar entries
["payment"]=>
NULL
因此,在返回的集合中,您有一些
Fare
对象没有相关的
Payment
,因此出现此错误,请确保
Fare
对象具有相关的
Payment
对象,然后再尝试访问一个对象。您可以尝试以下方法:

$fare->payment->amount;
{{ $fare->payment ? $fare->payment->amount : '' }}

由于它有效,我认为您在表中添加了一个“payment”列,因此使用
$fare->payment
可以访问属性而不是关系,您有3个选择:

  • 重命名您的列
  • 使用
    $fare->payment()->first()->amount
  • 重新命名你的关系

  • 谢谢你的回答:)谢谢你的回答,我把它弄明白了。你的回答不是很正确,但它帮助我找到了正确的方向。我在票价表中添加了一个名为“付款”的列。。我真是太傻了:)既然你有一对一的关系,而且你使用了一对一(
    $this->hasOne('Payment')
    ,那么你只会得到一个
    付款
    对象,而不是一个集合。啊,我刚刚找到了mysql,因为这里有另一个答案。。因此,这让我找到了正确的方向,但这正是问题所在:)与您的问题无关,但默认情况下,您在处创建的
    列和在
    处更新的
    列都是碳对象。因此,
    getTimeagoAttribute()
    只需返回
    $this->created\u at->diffForHumans()