拉拉维尔未知专栏“updated_at”

2022-08-30 06:17:10

我刚刚开始使用Laravel,我收到以下错误:

未知列“updated_at”插入到 gebruikers 中(naam,wachtwoord,updated_at,created_at)

我知道错误来自迁移表时的时间戳列,但我没有使用该字段。当我遵循Laravel教程时,我曾经使用它,但现在我正在制作(或试图制作)我自己的东西。即使我不使用时间戳,我也会收到此错误。我似乎找不到使用它的地方。这是代码:updated_at

控制器

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;
}

我一定忘了什么...我在这里做错了什么?


答案 1

在模型中,编写以下代码;

public $timestamps = false;

这将起作用。

说明:默认情况下,laravel会期望表中created_at和updated_at列。通过将其设置为 false,它将覆盖默认设置。


答案 2

将时间戳设置为 false 意味着您将同时丢失created_at和updated_at而您可以在模型中同时设置这两个键。

案例1:

您有列但没有update_at,您可以在模型中简单地设置为 falsecreated_atupdated_at

class ABC extends Model {

const UPDATED_AT = null;

案例2:

您同时具有列和列,但具有不同的列名称created_atupdated_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;
}

链接到 laravel 文档 https://laravel.com/docs/9.x/eloquent#timestamps


推荐