방금 Laravel을 시작했으며 다음과 같은 오류가 발생합니다.
gebruikers에 알 수없는 열 ‘updated_at’삽입 (naam, wachtwoord, updated_at, created_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;
}
뭔가 잊어 버려야합니다
답변
모델에서 아래 코드를 작성하십시오.
public $timestamps = false;
이 작동합니다.
설명 : 기본적으로 laravel은 테이블에 created_at & updated_at 열을 예상합니다. false로 설정하면 기본 설정보다 우선합니다.
답변
타임 스탬프를 false로 설정하면 created_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;
답변
Alex와 Sameer의 좋은 답변이지만, 왜 넣어야하는지에 대한 추가 정보
public $timestamps = false;
타임 스탬프는 Laravel 공식 페이지 에 잘 설명되어 있습니다 .
기본적으로 Eloquent는 created_at 및 updated_at 열이> 테이블에있을 것으로 예상합니다. > Eloquent가이 열을 자동으로 관리하지 못하게하려면 모델의 $ timestamps 특성을 false로 설정하십시오.
답변
laravel 5 이상을 사용하는 사람들은 공개 수정자를 다른 방법으로 사용해야합니다. 예외가 발생합니다.
Access level to App\yourModelName::$timestamps must be
public (as in class Illuminate\Database\Eloquent\Model)
public $timestamps = false;
답변
