Laravelで where id is nullでUpdate処理がエラーになった事象

LaravelのUpdate処理で、なぜか、更新対象のキーが変わって、うまく更新処理ができず、エラーになりました。

フレームワーク内の細かなところまで、追っていないですが、とりあえずの対応は行なったので、その時の対応をメモしておきます。

前提条件

Laravelのバージョン

$ php artisan --version
Laravel Framework 5.7.22

テーブル定義
database/migrationのファイル

Schema::create('master_products', function (Blueprint $table) {
    $table->string('key_code');
    $table->string('product_name');
    $table->timestamps();
    $table->primary('key_code');
});

発生した事象

id以外で主キーになりうるカラムのテーブルで更新処理を行なっていたが、

なぜか、値を変更しようとすると、更新キーがidに変わって更新できない

という事象が発生しました。

where id is null

これが、エラーメッセージ内にありましたが、

主キーは別のキーにしており、同じ値のままであれば、
問題なく更新処理は行えていました。

修正前の更新処理

public function updateData($request)
{
  $data = MasterProducts::where('key_code', 
          $request->key_code)->first();
  $data->key_code = $request->key_code;
  $data->product_name = $request->product_name;
  $data->save();
}

修正後の更新処理

$data = MasterProducts::where('key_code', $request->key_code)
          ->update(array('key_code' => $request->key_code,
                       'product_name' => $request->product_name));

参考:公式ドキュメント

https://laravel.com/docs/5.7/eloquent