试图获取非对象Laravel的属性用户

时间:2019-04-05 19:13:28

标签: php laravel

我的模特评论有:

public function shop()
{
    return $this->belongsTo(Shop::class);
}

public function user()
{
    return $this->belongsTo(User::class);
}

public function parent()
{
    return $this->belongsTo(static::class, 'id', 'parent_id');
}

public function isParent()
{
    return !$this->parent_id;
}

public function children()
{
    return $this->hasMany(static::class, 'parent_id');
}

public function sendReviewNotification()
{
    if ($this->isParent()) {
        $this->shop->owner->sendReviewParentNotification($this);
    } else {
        if ($this->user->is($this->parent->user)) {
            $this->shop->owner->sendReviewCommentNotification($this);
        } else {
            $this->parent->user->sendReviewCommentNotification($this);
        }
    }
}

在子注释中添加子注释时,出现错误:“试图获取非对象的属性”用户”,在ReviewObserver中,我这样调用sendReviewNotification:

public function created(Review $review)
{
    $review->sendReviewNotification();
}

当我添加父模块时。比所有方法都有效,但是当我添加一个子注释时,会出现此错误。为什么parent关系不起作用?

1 个答案:

答案 0 :(得分:0)

您应该将外键作为第二个参数而不是id:

public function parent()
{
    return $this->belongsTo(Parent::class, 'parent_id');
}

文档:

  

口才通过检查关系方法的名称并在方法名称后加上_id来确定默认的外键名称。   您可以将自定义键名称作为第二个参数传递给belongsTo方法

有关更多信息:click here