当前位置: 首页 > 知识库问答 >
问题:

Laravel未知列“更新位置”

楚俊杰
2023-03-14

我刚开始学习Laravel,我发现以下错误:

在gebruikers中插入未知列“更新位置”(naam、wachtwoord、更新位置、创建位置)

我知道错误来自迁移表时的timestamp列,但我没有使用updated\u 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;
}

我一定忘了什么。。。我做错了什么?

共有3个答案

督瑞
2023-03-14

Alex和Sameer给出了很好的回答,但可能只是关于为什么需要将

public $timestamps = false;

时间戳在官方的Laravel页面上有很好的解释:

缺省情况下,Eloquent期望created_at和updated_at列存在于

吕修伟
2023-03-14

将timestamps设置为false意味着您将丢失在处创建的和在处更新的密钥,而您可以在模型中同时设置这两个密钥。

案例一:

您已经在列中创建了update\u,但在列中没有更新。\u您可以在模型中将中的updated\u设置为false

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;

郏经纬
2023-03-14

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

public $timestamps = false;

这会奏效的。

说明:默认情况下laravel会created_at

 类似资料:
  • 问题内容: 我刚开始使用Laravel,却遇到以下错误: 未知列’updated_at’插入gebruikers(naam,wachtwoord,updated_at,created_at) 我知道错误是由您在迁移表时的时间戳列引起的,但我没有使用该字段。我遵循Laravel教程时曾经使用它,但是现在我正在制作(或尝试制作)自己的东西。即使不使用时间戳,我也会收到此错误。我似乎找不到使用它的地方。

  • 我已经在做我的项目好几个星期了。一切都很好。但今天突然间,我无法加载我更改的一些视图(有些视图可以更改并得到结果)。即使我更换了控制器,它现在仍然工作。根据SO和其他一些网站,我尝试了以下内容 重新启动浏览器 我错过了什么。提前谢谢。

  • 我试图运行一个Laravel查询,选择一个出现多次的特定字段,我得到了下面的错误。 “SQLSTATE[42S22]:未找到列:1054”“having子句”“中的未知列”“no_of_service”“(SQL:select count(*)作为内部连接在上的按分组,具有 我希望看到多次出现的字段。

  • 我使用的框架Laravel。 我有两个表(用户和成员)。当我想登录时,我会收到错误消息: SQLSTATE[42S22]:找不到列: 1054未知的列'user_email'in'where子句'(SQL:选择*fromwhere=?限制1)(绑定:数组(0= 表用户 表成员 迁移用户 移民成员 模型用户 模范会员 成员模型使用:使用照明\Auth\UserInterface; 控制器 auth.

  • 问题内容: 我正在使用Laravel框架。 我有2个表(用户和成员)。当我想登录时,收到错误消息: SQLSTATE [42S22]:找不到列:1054’where子句’中的未知列’user_email’(SQL:select * from where =?limit 1)(绑定:数组(0 =>'test@hotmail.com‘,)) 表用户 表成员 迁移用户 移民会员 模型使用者 模范会员 成

  • 我已经定义了不使用时间戳,但仍然使用laravel强制使用时间戳...我使用laravel 5.6。 例如,当我访问页面时-http://mypage/api/videos/21/comments 我得到一个错误-“SQLSTATE[42S22]:未找到列:在“order子句”(SQL:select*fromwhere视频id=▶" app/Providers/VideoComment.php a