Подтвердить что ты не робот

Laravel Unknown Column 'updated_at'

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

Неизвестный столбец "updated_at" вставить в gebruikers (naam, wachtwoord, updated_at, created_at)

Я знаю, что ошибка возникает из столбца timestamp при переносе таблицы, но я не использую поле 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', '[email protected]');

модель

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;
}

Я должен кое-что забыть... Что я здесь делаю неправильно?

4b9b3361

Ответ 1

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

public $timestamps = false;

Это сработает.

Ответ 2

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

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

public $timestamps = false;

Ответ 3

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

public $timestamps = false;

Временные метки хорошо описаны на официальной странице Laravel:

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

Ответ 4

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

Случай 1:

Вы создали столбец created_at но не update_at, вы можете просто установить для updated_at значение false в своей модели

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;

Ответ 5

Да. просто пиши

public $timestamps = false;

Ответ 6

Worked perfectly  
thanks,

public $timestamps = false;

Ответ 7

$id = put her id;
$update['user_id'] = $userId;
Use where(array('_id'=>$id))->pull($update);