Laravel Неизвестная колонка «updated_at»

Я только начал с Laravel и получаю следующую ошибку:

Неизвестный столбец «updated_at» вставить в gebruikers (Наам, 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;
}

Я должен что-то забыть … Что я здесь не так делаю?

112

Решение

В модели напишите приведенный ниже код;

public $timestamps = false;

Это будет работать.

288

Другие решения

Для тех, кто использует laravel 5 или выше, необходимо использовать публичный модификатор, иначе он выдаст исключение

Access level to App\yourModelName::$timestamps must be
public (as in class Illuminate\Database\Eloquent\Model)

public $timestamps = false;
12

Хороший ответ Алекса и Самира, но, возможно, просто дополнительная информация о том, почему необходимо поставить

public $timestamps = false;

Отметки времени хорошо объяснены на официальном Страница Laravel:

По умолчанию Eloquent ожидает, что в ваших> таблицах будут присутствовать столбцы create_at и updated_at. Если вы не хотите, чтобы эти столбцы автоматически управлялись с помощью> Eloquent, установите для свойства $ timestamps вашей модели значение false.

11

Установка меток времени в false означает, что вы потеряете оба create_at и updated_at, тогда как вы можете установить оба ключа в своей модели.

Пример:

Случай 1:
у тебя есть created_at столбец, но не update_at вы можете просто установить updated_at ложь в вашей модели

class ABC extends Model {

const UPDATED_AT = null;

Случай 2:
У вас есть оба created_at а также updated_at столбцы, но с разными именами столбцов
Вы могли бы просто сделать:

class ABC extends Model {

const CREATED_AT = 'name_of_created_at_column';
const UPDATED_AT = 'name_of_updated_at_column';

Наконец, полностью игнорируя отметки времени

class ABC extends Model {

public $timestamps = false;

Надеюсь это поможет
Ура !!!!

0
По вопросам рекламы [email protected]