programing

Larabel 알 수 없는 열 'updated_at'

sourcejob 2022. 11. 4. 23:25
반응형

Larabel 알 수 없는 열 'updated_at'

방금 Laravel을 시작했는데 다음과 같은 오류가 나타납니다.

알 수 없는 열 'updated_at'이(가) Gebruikers(naam, wachtwoord, updated_at, created_at)에 삽입됩니다.

테이블을 이행할 때 타임스탬프 컬럼에서 오류가 발생한다는 것은 알지만updated_at예전에는 라라벨 튜토리얼을 팔로우할 때 사용했는데 지금은 내 물건을 만들고 있다.타임스탬프를 사용하지 않아도 이 오류가 발생합니다.사용처를 찾을 수 없을 것 같습니다.코드는 다음과 같습니다.

컨트롤러

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

뭔가 잊어버린 것 같은데...내가 여기서 뭘 잘못하고 있는 거지?

모델에 다음 코드를 적습니다.

public $timestamps = false;

이거면 될 것 같아.

설명 : 기본적으로는 larabel은 테이블에서 created_at & updated_at 컬럼을 예상합니다.false로 설정하면 기본 설정이 덮어씁니다.

타임스탬프를 false로 설정하면 created_at과 updated_at가 모두 손실되는 반면 모델에서는 두 키를 모두 설정할 수 있습니다.

케이스 1:

당신은 가지고 있다created_atcolumn but 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;
}

laravel 매뉴얼 링크 https://laravel.com/docs/9.x/eloquent#timestamps

Alex와 Sameer의 답변은 좋았습니다만, 이 질문에 대한 자세한 내용은

public $timestamps = false;

타임스탬프는 공식 라라벨 페이지에 자세히 설명되어 있습니다.

기본적으로는 Allutive는 created_at 컬럼과 updated_at 컬럼이 > 테이블에 존재한다고 가정합니다.이러한 컬럼을 > Eloquent에 의해 자동으로 관리하지 않으려면 모델의 $timestamps 속성을 false로 설정하십시오.

larabel 5 이상을 사용하는 사용자는 공개 수식어를 사용해야 합니다.그렇지 않으면 예외가 발생합니다.

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

public $timestamps = false;

타임스탬프가 필요한 경우에도 이행 중에 타임스탬프를 추가하는 것을 잊은 경우 이행 파일에 다음 사항을 추가합니다.

class AddUsersTable extends Migration
{
    public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            $table->timestamps(); // <-- Add this to add created_at and updated_at
        });
    }
}

나중에 마이그레이션을 다시 실행하는 것을 잊지 마십시오.

php artisan migrate:rollback
php artisan migrate

언급URL : https://stackoverflow.com/questions/28277955/laravel-unknown-column-updated-at

반응형