> 데이터 베이스 > MySQL 튜토리얼 > Laravel 마이그레이션에서 기본 타임스탬프 열을 CURRENT_TIMESTAMP로 설정하는 방법은 무엇입니까?

Laravel 마이그레이션에서 기본 타임스탬프 열을 CURRENT_TIMESTAMP로 설정하는 방법은 무엇입니까?

DDD
풀어 주다: 2024-11-22 08:14:15
원래의
779명이 탐색했습니다.

How to Set Default Timestamp Columns to CURRENT_TIMESTAMP in Laravel Migrations?

Laravel: 기본 타임스탬프 열을 현재 타임스탬프로 설정

문제:

Laravel의 스키마 빌더/마이그레이션에서 사용자는 기본값이 다음과 같은 타임스탬프 열을 생성하는 방법에 대한 지침을 구하세요. CURRENT_TIMESTAMP 업데이트 시 CURRENT_TIMESTAMP. timestamps() 함수는 현재 생성된 열과 업데이트된 열 모두에 대해 기본값이 0000-00-00 00:00입니다.

해결책:

기본값을 설정하려면 Laravel 마이그레이션을 사용하여 타임스탬프 열을 CURRENT_TIMESTAMP로 변경하려면 다음을 사용하세요. DB::raw():

$table->timestamp('created_at')->default(DB::raw('CURRENT_TIMESTAMP'));
로그인 후 복사

Laravel 5.1.25부터 useCurrent() 열 수정자를 사용하여 이를 단순화할 수 있습니다.

$table->timestamp('created_at')->useCurrent();
로그인 후 복사

MySQL의 경우 ON UPDATE CURRENT_TIMESTAMP는 DB::raw():

$table->timestamp('updated_at')->default(DB::raw('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'));
로그인 후 복사

Laravel을 통해 사용 8.36.0, useCurrent() 및 useCurrentOnUpdate()를 함께 사용하면 동일한 결과를 얻을 수 있습니다.

$table->timestamp('updated_at')->useCurrent()->useCurrentOnUpdate();
로그인 후 복사

Gotchas:

  • MySQL: 5.7 이전, 0000-00-00 00:00:00이 잘못되었습니다. 이 문제를 해결하려면 useCurrent() 또는 nullable()을 사용하십시오.
  • PostgreSQL 및 Laravel 4.x: 타임스탬프 열의 기본 정밀도로 인해 Carbon 구문 분석에 문제가 발생했습니다. 정밀도가 0이 되도록 하려면 DB::raw('CURRENT_TIMESTAMP(0)')를 사용하세요.
  • PostgreSQL 및 Laravel 5.0 : 이제 기본 정밀도가 0이므로 이 문제를 방지할 수 있습니다.

Laravel 4.x 문제를 담당한 @andrewhl과 문제를 담당한 @ChanakaKarunarathne에게 감사드립니다. useCurrentOnUpdate() 단축키를 사용하세요.

위 내용은 Laravel 마이그레이션에서 기본 타임스탬프 열을 CURRENT_TIMESTAMP로 설정하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿