방금 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_at
column 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