laravel relationship between 5 tables

Solution:

Generally your model design is true, i have edited a few parts. Try the codes below.

class City extends Model
{
     public function state()  
     {
         return $this->belongsTo('App\State');
     }

     public function addresses() 
     {
         return $this->hasMany('App\Address');
     }
}


class State extends Model
{
     public function cities() 
     {
          return $this->hasMany('App\City');
     }

     public function addresses() 
     {
          return $this->hasMany('App\Address');
     }
}

class Profile extends Model
{
     public function addresses() 
     {
         return $this->hasMany('App\Address');
     }

     public function user() 
     {
         return $this->belongsTo('App\User');
     }
}

class Address extends Model
{
      public function profile() 
      {
           return $this->belongsTo('App\Profile');
      }

      public function city() 
      {
           return $this->belongsTo('App\City');
      }

      public function state() 
      {
           return $this->belongsTo('App\State');
      }
}

class User extends Model
{
     public function profile()
     {
          return $this->hasOne('App\Profile');
     }
}

By the way, Laravel relationships add default keys according to your method names. If you have problem about it you can find info from official documents. For example:

$this->belongsTo(‘App\Model’, ‘foreign_key’, ‘other_key’);