createでdefault valueが無いことになっているエラー


今日紹介するエラーコードはこれ!!!!

Illuminate\Database\QueryException
SQLSTATE[HY000]: General error: 1364 Field 'author' doesn't have a default value (SQL: insert into `articles` (`updated_at`, `created_at`) values (2021-06-28 05:58:16, 2021-06-28 05:58:16))

見ての通りレコードを作成するときにdefaultカラムが設定されていないカラムに何も値を入れないでcreateを行ったりするとできます。
普通は。

今日はそんなエラーコードに何故かハマって2時間くらい無駄にしたので備忘録も兼ねて書きます。
僕の書いたコードはこれ↓

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\DB;
use App\Models\Category;


class Article extends Model
{
    use HasFactory;

    private $md_categories;
    public function __construct()
    {
        $this->md_categories = new Category;
    }

    protected $fillable = ['author','tittle','date','content','category_id','is_valid']; 

    public function store($datas){

        //カテゴリーがすでに存在するか?
        if(DB::table('categories')->where('category_name', $datas['category'])->exists()){
            $category=DB::table('categories')->where('category_name', $datas['category'])->first();
            $category_id=$category->id;
        }else{
            $category_id=$this->md_categories->create_category($datas['category']);
        }

    //dd($datas['author']);

        Article::create([
            'author' => $datas['author'],
            'tittle' => $datas['tittle'],
            'date' => $datas['date'],
            'content' => $datas['content'],
            'category_id' => $category_id,
            'is_valid' => '1',
        ]);
    }
}

そしたら下記のエラーがでました。

Illuminate\Database\QueryException
SQLSTATE[HY000]: General error: 1364 Field 'author' doesn't have a default value (SQL: insert into `articles` (`updated_at`, `created_at`) values (2021-06-28 05:58:16, 2021-06-28 05:58:16))

authorにdefault valueがないと言っているがcreateの部分では'author' => $datas['author']で値をセットしておりddで中身が入っていることも確認した。
じゃあなぜ…

結論

コンストラクタのせいだった

コンストラクタがあるとcreateでインスタンスを呼び出した際にもコンストラクタが呼び出され値が初期化されるらしい。
詳しいことは要検証
取り敢えずコンストラクタを消して一旦解決