1. ホーム
  2. php

[解決済み】Laravel 不明なカラム「updated_at」。

2022-04-10 11:05:26

質問

Laravelを始めたばかりなのですが、以下のようなエラーが発生します。

不明な列 'updated_at' insert into gebruikers (naam, wachtwoord, updated_at, created_at)

テーブルをマイグレートする際にタイムスタンプ列からエラーが出るのは知っていますが updated_at フィールドを使用します。Laravelのチュートリアルに沿っていたときは使っていましたが、今は自分で作っている(作ろうとしている)ので。タイムスタンプを使っていないのに、このエラーが出ます。使っているところが見つからないようです。これがそのコードです。

コントローラ

public function created()
{
    if (!User::isValidRegister(Input::all())) {
        return Redirect::back()->withInput()->withErrors(User::$errors);
    }

    // Register the new user or whatever.
    $user = new User;
    $user->naam = Input::get('naam');
    $user->wachtwoord = Hash::make(Input::get('password'));
    $user->save();

    return Redirect::to('/users');
}

ルート

Route::get('created', 'UserController@created');

モデル

public static $rules_register = [
    'naam' => 'unique:gebruikers,naam'
];

public static $errors;
protected $table = 'gebruikers';

public static function isValidRegister($data)
{
    $validation = Validator::make($data, static::$rules_register);

    if ($validation->passes()) {
        return true;
    }

    static::$errors = $validation->messages();

    return false;
}

何か忘れているような気がする...。私は何を間違えているのだろう?

解決方法は?

モデル内に以下のコードを記述します。

public $timestamps = false;

これならうまくいくだろう。

説明 : デフォルトでは、laravelはテーブルのcreated_at & updated_atカラムを期待します。 これをfalseにすることで、デフォルトの設定をオーバーライドします。