Saya baru saja mulai dengan Laravel dan saya mendapatkan kesalahan berikut:
Kolom 'updated_at' tidak dikenal masukkan ke gebruikers (naam, wachtwoord, updated_at, Created_at)
Saya tahu kesalahan ini dari kolom cap waktu ketika Anda memigrasi tabel tapi saya tidak menggunakan updated_at
bidang. Saya dulu menggunakannya ketika saya mengikuti tutorial Laravel tetapi sekarang saya membuat (atau mencoba membuat) barang-barang saya sendiri. Saya mendapatkan kesalahan ini meskipun saya tidak menggunakan cap waktu. Sepertinya saya tidak dapat menemukan tempat di mana itu digunakan. Ini kodenya:
Pengendali
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');
}
Rute
Route::get('created', 'UserController@created');
Model
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;
}
Saya pasti lupa sesuatu ... Apa yang saya lakukan salah di sini?
Jawaban:
Dalam model, tulis kode di bawah ini;
Ini akan berhasil.
Penjelasan: Secara default laravel akan mengharapkan kolom Created_at & updated_at di tabel Anda. Dengan menjadikannya false, itu akan menimpa pengaturan default.
sumber
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
Mengatur cap waktu ke false berarti Anda akan kehilangan kedua Created_at dan updated_at sedangkan Anda dapat mengatur kedua kunci dalam model Anda.
Kasus 1:
Anda memiliki
created_at
kolom tetapi tidak memutakhirkan_at sehingga Anda dapat dengan mudah menetapkanupdated_at
false dalam model AndaKasus 2:
Anda memiliki keduanya
created_at
danupdated_at
kolom tetapi dengan nama kolom yang berbedaAnda bisa melakukannya:
Akhirnya mengabaikan cap waktu sepenuhnya:
sumber
Jawaban yang bagus oleh Alex dan Sameer, tapi mungkin hanya info tambahan tentang mengapa perlu dimasukkan
Stempel waktu dijelaskan dengan baik di halaman resmi Laravel :
sumber
Bagi mereka yang menggunakan laravel 5 atau di atas harus menggunakan pengubah publik selain itu akan membuang pengecualian
sumber