title: Laravel save() is updating the wrong mysql record
body: <p>I have a user settings table which consists of 3 columns (or see images below): <code>user_id</code>, <code>setting</code>, <code>value</code>.</p>
  
  <p>I then have two functions one to save timezones and one to save timeformats.</p>
  
  <pre><code>public function setTimezone($timezone){
      $settings = UserSettingsModel::firstOrNew(['user_id' =&gt; $this-&gt;user-&gt;id, 'setting' =&gt; 'timezone']);
      $settings-&gt;setting = 'timezone';
      $settings-&gt;value   = $timezone;
      $result = $settings-&gt;save();
  }
  
  public function setTimeFormat($timeformat){
      $settings = UserSettingsModel::firstOrNew(['user_id' =&gt; $this-&gt;user-&gt;id, 'setting' =&gt; 'timeformat']);
      $settings-&gt;setting = 'timeformat';
      $settings-&gt;value   = $timeformat;
      $result = $settings-&gt;save();
  }
  </code></pre>
  
  <p>When I run the functions for the first time (each one is ran independently via an ajax call) I get this which is correct:</p>
  
  <p><a href="https://i.stack.imgur.com/zIKOA.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/zIKOA.png" alt="First Insert"></a></p>
  
  <p>Then when I try to update the <code>timeformat</code>, (again each is independently ran) I get this:</p>
  
  <p><a href="https://i.stack.imgur.com/PwRlS.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/PwRlS.png" alt="Updated"></a></p>
  
  <p>For some reason the <code>timezone</code> setting is overwriting the <code>timeformat</code> setting, and I am not sure why.</p>
  
  <p>Here is the <strong>UserSettingsModel</strong> class:</p>
  
  <pre><code>class UserSettingsModel extends BaseModel{
      protected $table      = 'user_settings';
      protected $fillable   = ['user_id', 'setting', 'value'];
      protected $primaryKey = 'user_id';
      public $timestamps    = false;
  }
  </code></pre>
  
  <p>Here is the query log for a <strong>timezone</strong> update:</p>
  
  <pre><code>array:2 [
    0 =&gt; array:3 [
      "query" =&gt; "select * from `user_settings` where (`user_id` = ? and `setting` = ?) limit 1"
      "bindings" =&gt; array:2 [
        0 =&gt; 1
        1 =&gt; "timezone"
      ]
      "time" =&gt; 0.27
    ]
    1 =&gt; array:3 [
      "query" =&gt; "update `user_settings` set `value` = ? where `user_id` = ?"
      "bindings" =&gt; array:2 [
        0 =&gt; "America/Chicago"
        1 =&gt; 1
      ]
      "time" =&gt; 19.73
    ]
  ]
  </code></pre>
  
  <p>Here is the query log for a <strong>timeformat</strong> query:</p>
  
  <pre><code>array:2 [
    0 =&gt; array:3 [
      "query" =&gt; "select * from `user_settings` where (`user_id` = ? and `setting` = ?) limit 1"
      "bindings" =&gt; array:2 [
        0 =&gt; 1
        1 =&gt; "timeformat"
      ]
      "time" =&gt; 0.25
    ]
    1 =&gt; array:3 [
      "query" =&gt; "update `user_settings` set `value` = ? where `user_id` = ?"
      "bindings" =&gt; array:2 [
        0 =&gt; "12hr"
        1 =&gt; 1
      ]
      "time" =&gt; 13.67
    ]
  ]
  </code></pre>