php - que - Laravel Columna desconocida ''updated_at''
para que sirve el yield laravel (4)
Acabo de comenzar con Laravel y aparece el siguiente error:
La columna desconocida ''updated_at'' se inserta en gebruikers (naam, wachtwoord, updated_at, created_at)
Sé que el error proviene de la columna de marca de tiempo cuando
updated_at
una tabla, pero no estoy usando el campo
updated_at
.
Solía usarlo cuando seguía el tutorial de Laravel, pero ahora que estoy haciendo (o intento hacer) mis propias cosas.
Recibo este error aunque no uso marcas de tiempo.
Parece que no puedo encontrar el lugar donde se está utilizando.
Este es el 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'');
}
Ruta
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;
}
Debo estar olvidando algo ... ¿Qué estoy haciendo mal aquí?
Buena respuesta de Alex y Sameer, pero tal vez solo información adicional sobre por qué es necesario poner
public $timestamps = false;
Las marcas de tiempo se explican muy bien en la página oficial de Laravel :
Por defecto, Eloquent espera que existan columnas created_at y updated_at en sus> tablas. Si no desea que estas columnas sean administradas automáticamente por> Eloquent, establezca la propiedad $ timestamps en su modelo en falso.
En el modelo, escriba el siguiente código;
public $timestamps = false;
Esto funcionaria.
Establecer marcas de tiempo en falso significa que perderá tanto created_at como updated_at, mientras que podría configurar ambas claves en su modelo.
Caso 1:
Ha
created_at
columna pero no update_at, simplemente puede establecer
updated_at
en falso en su modelo
class ABC extends Model {
const UPDATED_AT = null;
Caso 2:
Tiene ambas columnas
created_at
y
updated_at
pero con diferentes nombres de columna
Simplemente podrías hacer:
class ABC extends Model {
const CREATED_AT = ''name_of_created_at_column'';
const UPDATED_AT = ''name_of_updated_at_column'';
Finalmente ignorando las marcas de tiempo por completo:
class ABC extends Model {
public $timestamps = false;
Para aquellos que usan laravel 5 o superior, deben usar un modificador público; de lo contrario, arrojará una excepción
Access level to App/yourModelName::$timestamps must be
public (as in class Illuminate/Database/Eloquent/Model)
public $timestamps = false;