创建模型方法以从另一个模型获取数据

I have the following tables :

Locations:
id
name

areas:
id
name

buildings:
id
name

Reports:
id
content
FK | building_id

How can i write a relationship method in App\Report Model file that allow me to show the report (location) <- from \App\Location Model.

I tried with this, in Report model :

public function location()
    {
        return Location::whereHas('areas', function($q){
            $q->whereHas('observations',function ($q){
                $q->where('observations.id',$this->id);
            });
        })->get();
    }

But it returned an error :

ErrorException (E_ERROR) Call to undefined method App\Location::whereHas() (View:

Your Location model should extends Eloquent

use Illuminate\Database\Eloquent\Model;

class Location extends Model
{
    ...

Also it's better to use Laravel relationships for that. You will end up with a code like this

public function location()
{
    return $this->building->area->location;
}

You will need something like this

class Report extends Model
{
    public function location()
    {
        return $this->building->area->location;
    }

    public function building()
    {
        return $this->belongsTo(App\Building::class);
    }
}

class Building extends Model
{
    public function area()
    {
        return $this->belongsTo(App\Area::class);
    }
}

class Area extends Model
{
    public function location()
    {
        return $this->belongsTo(App\Location::class);
    }
}