mertindervish
mertindervish

Reputation: 301

Laravel Eloquent Can't Get Attribute When I Use Find

I need to return email of the user like in example:

public function getUserEmailAttribute()
{
    $user = User::find($this->used_by);
    return $user->email;
}

When I use $this->used_by it's throw me this error:

Trying to get property of non-object (View: /home/mertindervish/Documents/school/app/views/admin/invitation/list.blade.php)

But when I use a string like '2', '3' it's working. Is there any problem with my code? I tried to var_dump $this->used_by and it's return string(1).

Upvotes: 1

Views: 1865

Answers (1)

lukasgeiter
lukasgeiter

Reputation: 152860

It turns out that one invitation didn't have a valid used_by value.

To prevent such an error in the future, add a null check:

public function getUserEmailAttribute()
{
    $user = User::find($this->used_by);
    if(is_null($user)) return null;
    return $user->email;
}

Upvotes: 1

Related Questions