我刚开始使用Laravel,就收到了以下错误:
将未知列“updated_at”插入到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;
}
我一定是忘了什么...我做错了什么?
6条答案
按热度按时间wdebmtf21#
在模型中,编写以下代码;
这样就行了。
说明:默认情况下,laravel会在你的表中使用created_at和updated_at列,如果设置为false,它会覆盖默认设置。
htzpubme2#
将时间戳设置为false意味着您将丢失created_at和updated_at,而您可以在模型中设置这两个键。
您有
created_at
列,但没有update_at,您只需在模型中将updated_at
设置为false即可您有
created_at
和updated_at
列,但列名不同您可以简单地执行以下操作:
最后完全忽略时间戳:
链接至laravel文档www.example.comhttps://laravel.com/docs/9.x/eloquent#timestamps
dphi5xsq3#
亚历克斯和萨米尔的回答很好,但也许只是额外的信息,为什么有必要把
时间戳很好地解释了官方Laravel页面:
默认情况下,Eloquent希望〉表中存在created_at和updated_at列,如果您不希望〉Eloquent自动管理这些列,请将模型的$timestamps属性设置为false。
guykilcj4#
对于那些使用laravel5或更高版本的用户,必须使用public修饰符,否则会抛出异常
g6baxovj5#
如果您仍然需要时间戳,但只是忘记将其添加到迁移中,则将以下内容添加到迁移文件中也会起作用:
不要忘记在之后重新运行迁移。
x一个一个一个一个x一个一个二个x
wi3ka0sx6#
如果不需要
created_at
和updated_at
,请在模型中编写以下代码。如果将来需要使用
created_at
和updated_at
,可以添加列。创建迁移文件:
编辑迁移文件:
运行迁移: