Ich habe gerade mit Laravel angefangen und erhalte die folgende Fehlermeldung:
Unbekannte Spalte 'updated_at' in gebruikers einfügen (naam, wachtwoord, updated_at, created_at)
Ich weiß, dass der Fehler aus der Zeitstempelspalte stammt, wenn Sie eine Tabelle migrieren, aber ich verwende die nicht updated_at
Feld nicht. Ich habe es verwendet, als ich dem Laravel-Tutorial gefolgt bin, aber jetzt, wo ich meine eigenen Sachen mache (oder versuche, sie zu machen). Ich erhalte diesen Fehler, obwohl ich keine Zeitstempel verwende. Ich kann den Ort, an dem es benutzt wird, nicht finden. Dies ist der Code:
Regler
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
Route::get('created', 'UserController@created');
Modell
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;
}
Ich muss etwas vergessen ... Was mache ich hier falsch?
Antworten:
Schreiben Sie im Modell den folgenden Code.
Das würde funktionieren.
Erläuterung: Standardmäßig erwartet laravel in Ihrer Tabelle die Spalte created_at & updated_at. Wenn Sie den Wert auf "false" setzen, wird die Standardeinstellung überschrieben.
quelle
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
Wenn Sie Zeitstempel auf false setzen, verlieren Sie sowohl created_at als auch update_at, während Sie beide Schlüssel in Ihrem Modell festlegen können.
Fall 1:
Sie haben eine
created_at
Spalte, aber kein update_at, das Sieupdated_at
in Ihrem Modell einfach auf false setzen könnenFall 2:
Sie haben beide
created_at
undupdated_at
Spalten, aber mit unterschiedlichen SpaltennamenSie könnten einfach tun:
Endlich Zeitstempel komplett ignorieren:
quelle
Schöne Antwort von Alex und Sameer, aber vielleicht nur zusätzliche Informationen darüber, warum es notwendig ist, zu setzen
Zeitstempel werden auf der offiziellen Laravel-Seite ausführlich erklärt :
quelle
Für diejenigen, die Laravel 5 oder höher verwenden, muss ein öffentlicher Modifikator verwendet werden. Andernfalls wird eine Ausnahme ausgelöst
quelle