213

Laravel を使い始めたばかりで、次のエラーが表示されます。

gebruikers (naam、wachtwoord、updated_at、created_at) への不明な列 'updated_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;
}

私は何かを忘れているに違いない.私はここで何が間違っているのですか?

4

5 に答える 5

51

タイムスタンプを false に設定すると、モデルに両方のキーを設定できますが、created_at と updated_at の両方が失われることになります。

ケース 1:

列はありcreated_atますが update_at はありませんupdated_at。モデルで単純に false に設定できます

class ABC extends Model {

const UPDATED_AT = null;

ケース 2:

と の両方created_atの列がありupdated_atますが、列名が異なります

あなたは単に行うことができます:

class ABC extends Model {

const CREATED_AT = 'name_of_created_at_column';
const UPDATED_AT = 'name_of_updated_at_column';

最後に、タイムスタンプを完全に無視します:

class ABC extends Model {

public $timestamps = false;
于 2018-12-07T01:55:40.850 に答える