title: Laravel 5.4 field doesn't have a default value
body: <p>I am having this error and none of the googled result i checked is similar to my problem.</p>
  
  <p>I have an application with class Deal, User, and Matches</p>
  
  <p>A deal has many matches.
  A user has many matches.
  A user has many deals.</p>
  
  <p>I am attempting to create a new Match using my Deal object</p>
  
  <pre><code>$deal-&gt;matches()-&gt;create(['user_id'=&gt;$id]);
  </code></pre>
  
  <p>This is my match class, i have defined all needed relationships</p>
  
  <pre><code>class Match extends Model
  {
      /**
       * The attributes that are mass assignable.
       *
       * @var array
       */
      protected $guarded = [];
      public $timestamps = false;
      public $expired_on = "";
  
  
      public static function boot()
      {
          parent::boot();
  
          static::creating(function ($model) {
              $model-&gt;matched_on = $model-&gt;freshTimestamp();
          });
      }
  
      public function __construct(){
          $d = (new \DateTime($this-&gt;matched_on))-&gt;modify('+1 day');
          $this-&gt;expired_on = $d-&gt;format('Y-m-d H:i:s');
      }
  
  
      /**
       * Get the user that owns the match.
       */
      public function user()
      {
          return $this-&gt;belongsTo('App\User');
      }
  
      /**
       * Get the deal that owns the match.
       */
      public function deal()
      {
          return $this-&gt;belongsTo('App\Deal');
      }
  }
  </code></pre>
  
  <p>And i keep getting this error when i attempt to create a new match.</p>
  
  <blockquote>
    <p>QueryException in Connection.php line 647:
    SQLSTATE[HY000]: General error: 1364 Field 'user_id' doesn't have a default value (SQL: insert into <code>matches</code> (<code>deal_id</code>) values (1))</p>
  </blockquote>
  
  <p>I have my guarded to be an empty array, what could be the problem?</p>