Я только начал с Laravel и получаю следующую ошибку:
Вставить неизвестный столбец «updated_at» в gebruikers (naam, wachtwoord, updated_at, создал_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;
}
Я должен что-то забыть ... Что я здесь не так делаю?
Ответы:
В модели напишите приведенный ниже код;
Это будет работать.
Объяснение: По умолчанию laravel ожидает столбец create_at & updated_at в вашей таблице. Если установить значение false, оно переопределит настройку по умолчанию.
источник
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
Установка меток времени в false означает, что вы потеряете оба create_at и updated_at, тогда как вы можете установить оба ключа в своей модели.
Случай 1:
У вас есть
created_at
столбец, но нет update_at, который вы можете просто установитьupdated_at
в false в своей моделиСлучай 2:
У вас есть
created_at
иupdated_at
столбцы и столбцы, но с разными именами столбцовВы можете просто сделать:
Наконец, полностью игнорируя временные метки:
источник
Хороший ответ Алекса и Самира, но, возможно, просто дополнительная информация о том, почему необходимо поставить
Временные метки хорошо объяснены на официальной странице Laravel :
источник
Для тех, кто использует laravel 5 или выше, необходимо использовать публичный модификатор, иначе он выдаст исключение
источник