ErrorException(E_ERROR)试图在laravel 5.8中获取非对象的属性'id'

时间:2019-08-15 03:34:17

标签: php laravel

如何修复?

我使用laravel 5.8和linux操作系统

public function getAverageAttribute()
{
    return (int)$this->reviews()->where('user_id', auth()->user()->id)->avg('rating');
}

试图获取非对象的属性“ id”

2 个答案:

答案 0 :(得分:0)

调试代码,您会发现问题出在哪里。 E_ERROR注意,在您的情况下,是“试图获取非对象的属性”,以下代码返回非对象实体。

auth()->user()->id

var_dump这段代码,并检查实际返回的类型。

答案 1 :(得分:0)

用户未通过身份验证。您将必须首先检查用户是否登录。由于auth()->user()返回null,因此,当您尝试访问其上的id属性时,将引发错误。

首先检查用户是否已通过身份验证:

public function getAverageAttribute()
{
    return auth()->user() ? (int)$this->reviews()->where('user_id', auth()->user()->id)->avg('rating') : false;
}