>  기사  >  백엔드 개발  >  CURRENT_TIMESTAMP 업데이트 시 Laravel 타임스탬프를 CURRENT_TIMESTAMP로 설정하는 방법은 무엇입니까?

CURRENT_TIMESTAMP 업데이트 시 Laravel 타임스탬프를 CURRENT_TIMESTAMP로 설정하는 방법은 무엇입니까?

DDD
DDD원래의
2024-10-20 12:17:02254검색

How to Set Laravel Timestamps to CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP?

Laravel 마이그레이션의 기본 타임스탬프

Laravel의 Schema Builder는 데이터베이스 스키마 조작을 단순화하지만 타임스탬프 열의 기본값을 현재 타임스탬프로 설정하는 것은 어려울 수 있습니다.

문제:

Laravel에서 timestamps()는 기본값이 0000-00-00 00:00인 타임스탬프 열을 생성합니다. Laravel 마이그레이션을 사용하여 이 기본값을 CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP로 어떻게 설정할 수 있습니까?

해결책:

CURRENT_TIMESTAMP를 타임스탬프 열의 기본값으로 지정하려면 DB를 사용하세요. :raw():

<code class="php">$table->timestamp('created_at')->default(DB::raw('CURRENT_TIMESTAMP'));</code>

Laravel 5.1.25부터 useCurrent() 열 수정자를 사용합니다.

<code class="php">$table->timestamp('created_at')->useCurrent();</code>

ON UPDATE 절의 경우 DB::raw를 사용할 수 있습니다. ():

<code class="php">$table->timestamp('updated_at')->default(DB::raw('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'));</code>

Laravel 8.36.0부터 useCurrentOnUpdate() 수정자를 사용하세요:

<code class="php">$table->timestamp('updated_at')->useCurrent()->useCurrentOnUpdate();</code>

문제점:

  • MySQL: 버전 5.7부터 0000-00-00 00:00:00은 더 이상 유효한 날짜가 아닙니다. 유효한 기본값을 설정하거나 nullable() 타임스탬프를 사용하세요.
  • PostgreSQL 및 Laravel 4.x: 마이크로초 구문 분석 문제를 방지하려면 CURRENT_TIMESTAMP에 0 정밀도를 지정하세요.
<code class="php">$table->timestamp('created_at')->default(DB::raw('CURRENT_TIMESTAMP(0)'));</code>

위 내용은 CURRENT_TIMESTAMP 업데이트 시 Laravel 타임스탬프를 CURRENT_TIMESTAMP로 설정하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.