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 AppyourModelName::$timestamps must be public (as in class IlluminateDatabaseEloquentModel)
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