Trying to get property of non-object means that you are expecting some variable to be an object, but it is not, e.g.
$user->name; // is $user is null, you will get this error
Usually this will happen if you use find() when getting a model, and it returns null. It is better to guard against this by using findOrFail() instead.
It can also happen whenever you are traversing relationships, but a related model is not available:
$user->friend->name // $user might be okay, but if friend relation is null then you get the error as well
You can guard against this using the optional()helper:
optional($user->friend)->name