在用户模型中使用whereHas获取用户相关的建筑物

I have the following method in App\User Model file

Public function buildings(){
        return Building::whereHas('area', function ($q) {
            $q->whereHas('users', function ($q) {
                $q->where('users.id', auth()->id());
            });
        })->get();
    }

When i try to get the user buildings in View file, i got this error :

@foreach (Auth::user()->buildings as $b)
    {{$b->name}}
                @endforeach

App\User::buildings must return a relationship instance. (View: C:\xampp\htdocs\hseesources\views\observations\form_observation.blade.php)

I tried the code in web.php and it works that means that the relationship setting is perfect, but i want it to work in User Model

Route::get('/', function () {
    return App\Building::whereHas('area', function ($q) {
$q->whereHas('users', function ($q){
    $q->where('users.id',11);
});
    })->get();
});

In your view file you should be calling the buildings() function in order to return a Relation instance (i.e returning a relation object)

Change

@foreach (Auth::user()->buildings as $b)
    {{$b->name}}
                @endforeach

to

@foreach (Auth::user()->buildings() as $b)
    {{$b->name}}
                @endforeach