SQLSTATE[42S22]: Column not found: 1054 Unknown column ‘updated_at’ in ‘field list

Laravelで「SQLSTATE[42S22]: Column not found: 1054 Unknown column ‘updated_at’ in ‘field list」というエラーがでたので、その解決策を紹介します。

事の経緯

マイグレーションファイルでテーブルを作成します。

<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateNewsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('news', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('name');
            $table->string('title');
            $table->string('url');
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('news');
    }
}

テーブルを作成します。

php artisan migrate

その後、そのテーブルに値を保存しています。(一部)

 public function store(News $fav, Request $request)
    {
        //dd($request->all());
        $input=$request["news"];
        $fav->fill($input)->save();
        return redirect('/home');
    }

しかし、「SQLSTATE[42S22]: Column not found: 1054 Unknown column ‘updated_at’ in ‘field list…..」というエラーが発生。その解決方法を紹介します。

解決方法1

調べたところ「updated_atカラム」が無いとのことです。英語を読めばわかるのですが…

解決方法はタイムスタンプを無効にすれば良いようです。

public function store(News $fav, Request $request)
    {
        //dd($request->all());
        $input=$request["news"];
        $fav->timestamps = false; //追加
        $fav->fill($input)->save();
        return redirect('/home');
    }

解決方法2

また、もう一つの方法としてモデルに以下のコードを追加します。

public $timestamps = false;

これでエラーメッセージが出なくなりました。

めでたしめでたし。