>  기사  >  데이터 베이스  >  Laravel 5.2 Eloquent 모델에서 사용자 정의 문자열 기본 키를 사용할 때 0 값을 방지하는 방법은 무엇입니까?

Laravel 5.2 Eloquent 모델에서 사용자 정의 문자열 기본 키를 사용할 때 0 값을 방지하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-26 11:06:13318검색

How to Avoid Zero Values When Using Custom String Primary Keys in Laravel 5.2 Eloquent Models?

Laravel 5.2: Eloquent 테이블을 위한 사용자 정의 기본 키 - 0 값 방지

Laravel 5.2에서 문자열을 사용자 정의 기본 키로 사용 Eloquent 테이블은 예상치 못한 동작을 초래할 수 있습니다: 기본 키의 값이 0이 됩니다. 이 문제를 해결하려면 Eloquent 모델의 속성 캐스팅 메커니즘의 특정 측면을 이해하는 것이 중요합니다.

기본적으로 Eloquent는 특정 속성을 적절한 데이터 유형으로 캐스팅하려고 시도합니다. 자동 증가 테이블의 경우 ID는 정수로 간주됩니다. 그러나 문자열을 기본 키로 사용하는 경우 이 캐스팅으로 인해 키 값이 0으로 잘못 변환됩니다.

이 문제를 해결하려면 다음 세 가지 전략을 사용할 수 있습니다.

방법 1: 증분 비활성화

모델 클래스에서 $incrementing 속성을 false로 설정하면 테이블의 기본 키는 자동 증가하지 않습니다. 이는 Eloquent가 기본 키에 정수 캐스팅을 적용하지 않도록 지시합니다.

class UserVerification extends Model
{
    protected $primaryKey = 'verification_token';
    public $incrementing = false;
}

방법 2: 증분 키 지정

모델의 기본 키가 정수인 경우 , 자동 증가가 아니더라도 $incrementing을 false로 설정하는 것은 적절하지 않을 수 있습니다. 대신 $keyType 속성을 사용하여 기본 키의 데이터 유형을 지정하세요.

class UserVerification extends Model
{
    protected $primaryKey = 'verification_token';
    protected $keyType = 'string';
}

방법 3: 기본 키를 명시적으로 캐스팅

대체 접근 방식은 명시적으로 다음을 수행하는 것입니다. Eloquent 쿼리 자체 내의 문자열에 기본 키를 캐스팅합니다. 이렇게 하면 모델의 기본 설정에 관계없이 기본 키가 문자열로 처리됩니다.

UserVerification::where('verification_token', (string) $token)->first();

위 내용은 Laravel 5.2 Eloquent 모델에서 사용자 정의 문자열 기본 키를 사용할 때 0 값을 방지하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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