title: Laravel - Unexpected behavior in BelongsTo relationship after model creation
body: <p>I'm having a weird behavior in a BelongsTo relationship after a model creation.</p>
  
  <p>I'm creating and address and associating a country to it, to achieve that, I'm using the create method of the address model, this is the snippet of code:</p>
  
  <pre><code>$country = Country::find($input['country']);
  $user = User::find($input['user']);
  
  $address = Address::create($input);       // Address created and saved
  $address-&gt;user()-&gt;associate($user);       // Works perfectly
  $address-&gt;country()-&gt;associate($country); // Does not work :(
  $address-&gt;push();
  </code></pre>
  
  <p>After that, I'm having this error in the line where the country-address association is done:</p>
  
  <pre><code>ErrorException in BelongsTo.php line 75:
  Undefined property: App\Models\Address::$country
  </code></pre>
  
  <p>The weird behavior is that the address-user association is working, and the association between the address and the country is only possible if after the creation of the address I retrieve it with the find method.</p>
  
  <pre><code>$country = Country::find($input['country']);
  $user = User::find($input['user']);
  
  $address = Address::create($input);
  $address = Address::find($address-&gt;id);   // Why?
  $address-&gt;user()-&gt;associate($user);       // Always works
  $address-&gt;country()-&gt;associate($country); // Now is working :)
  $address-&gt;push();
  </code></pre>
  
  <p>Could you explain me why the association is behaving in that way, and if it's possible to fix it?</p>
  
  <p>Then, I'm comparing the returned instances of the create method and the find method, and I noticed that some attributes are lost in the instance of the create method:</p>
  
  <pre><code>$createAddress = Address::create($input);
  $findAddress = Address::find($address-&gt;id);
  dd(['create' =&gt; $createAddress, 'find' =&gt; $findAddress]);
  </code></pre>
  
  <p>This is the output of dd():</p>
  
  <pre><code>array:2 [▼
    "create" =&gt; Address {#211 ▼
      #table: "addresses"
      #guarded: array:1 [▶]
      #fillable: array:9 [▶]
      #hidden: array:3 [▶]
      #dates: array:3 [▶]
      #connection: null
      #primaryKey: "id"
      #perPage: 15
      +incrementing: true
      +timestamps: true
      #attributes: array:12 [▼
        "alias" =&gt; "Home"
        "street" =&gt; "Home St."
        "number_external" =&gt; "123"
        "number_internal" =&gt; "456"
        "neighborhood" =&gt; "My beautiful neighborhood"
        "city" =&gt; "Cool City"
        "town" =&gt; "Cool Town"
        "state" =&gt; "Cool State"
        "zip_code" =&gt; "123456"
        "updated_at" =&gt; "2015-12-09 11:10:14"
        "created_at" =&gt; "2015-12-09 11:10:14"
        "id" =&gt; 43
      ]
      #original: array:12 [▼
        "alias" =&gt; "Home"
        "street" =&gt; "Home St."
        "number_external" =&gt; "123"
        "number_internal" =&gt; "456"
        "neighborhood" =&gt; "My beautiful neighborhood"
        "city" =&gt; "Cool City"
        "town" =&gt; "Cool Town"
        "state" =&gt; "Cool State"
        "zip_code" =&gt; "123456"
        "updated_at" =&gt; "2015-12-09 11:10:14"
        "created_at" =&gt; "2015-12-09 11:10:14"
        "id" =&gt; 43
      ]
      #relations: []
      #visible: []
      #appends: []
      #dateFormat: null
      #casts: []
      #touches: []
      #observables: []
      #with: []
      #morphClass: null
      +exists: true
      +wasRecentlyCreated: true
      #forceDeleting: false
    }
    "find" =&gt; Address {#232 ▼
      #table: "addresses"
      #guarded: array:1 [▶]
      #fillable: array:9 [▶]
      #hidden: array:3 [▶]
      #dates: array:3 [▶]
      #connection: null
      #primaryKey: "id"
      #perPage: 15
      +incrementing: true
      +timestamps: true
      #attributes: array:16 [▼
        "id" =&gt; "43"
        "alias" =&gt; "Home"
        "street" =&gt; "Home St."
        "number_external" =&gt; "123"
        "number_internal" =&gt; "456"
        "neighborhood" =&gt; "My beautiful neighborhood"
        "city" =&gt; "Cool City"
        "town" =&gt; "Cool Town"
        "state" =&gt; "Cool State"
        "country" =&gt; "0"
        "zip_code" =&gt; "123456"
        "is_legal_address" =&gt; "0"
        "user_id" =&gt; "0"
        "deleted_at" =&gt; null
        "created_at" =&gt; "2015-12-09 11:10:14"
        "updated_at" =&gt; "2015-12-09 11:10:14"
      ]
      #original: array:16 [▼
        "id" =&gt; "43"
        "alias" =&gt; "Home"
        "street" =&gt; "Home St."
        "number_external" =&gt; "123"
        "number_internal" =&gt; "456"
        "neighborhood" =&gt; "My beautiful neighborhood"
        "city" =&gt; "Cool City"
        "town" =&gt; "Cool Town"
        "state" =&gt; "Cool State"
        "country" =&gt; "0"
        "zip_code" =&gt; "123456"
        "is_legal_address" =&gt; "0"
        "user_id" =&gt; "0"
        "deleted_at" =&gt; null
        "created_at" =&gt; "2015-12-09 11:10:14"
        "updated_at" =&gt; "2015-12-09 11:10:14"
      ]
      #relations: []
      #visible: []
      #appends: []
      #dateFormat: null
      #casts: []
      #touches: []
      #observables: []
      #with: []
      #morphClass: null
      +exists: true
      +wasRecentlyCreated: false
      #forceDeleting: false
    }
  ]
  </code></pre>
  
  <p>MODELS:</p>
  
  <pre><code>class Address extends Model {
    public function user() {
      return $this-&gt;belongsTo('App\Models\User', 'user_id');
    }
  
    public function country() {
      return $this-&gt;belongsTo('App\Models\Country', 'country');
    }
  }
  
  class Country extends Model {
    public function addresses() {
      return $this-&gt;hasMany('App\Models\Address', 'country');
    }
  }
  
  class User extends Model {
    public function addresses() {
      return $this-&gt;hasMany('App\Models\Address', 'user_id');
    }
  }
  </code></pre>
  
  <p>Thanks in advance for your help.</p>