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;
これでエラーメッセージが出なくなりました。
めでたしめでたし。