Acabei de começar com o Laravel e recebo o seguinte erro:
Coluna desconhecida 'updated_at' inserida nos gebruikers (naam, wachtwoord, updated_at, created_at)
Eu sei que o erro é da coluna de carimbo de data e hora quando você migra uma tabela, mas não estou usando o updated_at
campo. Eu costumava usá-lo quando seguia o tutorial do Laravel, mas agora estou criando (ou tentando fazer) minhas próprias coisas. Eu recebo esse erro mesmo que não use carimbos de data e hora. Não consigo encontrar o lugar onde está sendo usado. Este é o código:
Controlador
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');
}
Rota
Route::get('created', 'UserController@created');
Modelo
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;
}
Devo estar esquecendo algo ... O que estou fazendo de errado aqui?
Respostas:
No modelo, escreva o código abaixo;
Isso funcionaria.
Explicação: Por padrão, o laravel espera a coluna created_at & updated_at na sua tabela. Ao torná-lo falso, substituirá a configuração padrão.
fonte
By default, Eloquent expects created_at and updated_at columns to exist on your tables. If you do not wish to have these columns automatically managed by Eloquent, set the $timestamps property on your model to false
Definir timestamps como false significa que você perderá o created_at e updated_at enquanto você pode definir as duas chaves no seu modelo.
Caso 1:
Você tem
created_at
coluna, mas não update_at, você pode simplesmente definirupdated_at
como false no seu modeloCaso 2:
Você tem colunas
created_at
eupdated_at
mas com nomes de colunas diferentesVocê poderia simplesmente fazer:
Por fim, ignorando completamente os registros de data e hora:
fonte
Boa resposta de Alex e Sameer, mas talvez apenas informações adicionais sobre por que é necessário colocar
Os carimbos de data e hora são bem explicados na página oficial do Laravel :
fonte
Para aqueles que estão usando o laravel 5 ou superior, devem usar o modificador público de outra forma, lançará uma exceção
fonte