Eloquent에서 기본 기본 키 변경


93

Eloquent 모델 기본 키를 변경할 수 있습니다.

예를 들어 admin_id'id'대신 기본 키를 설정하고 싶습니다 .

모델의 테이블 이름을 다음과 같이 변경할 수 있다는 것을 알고 있습니다.

protected $table = "admin";

기본 키와 비슷한 것이 있습니까?

답변:


191

class User extends Eloquent {

    protected $primaryKey = 'admin_id';

}

16
이 질문을 참조하는 다른 사람은 다른 답변 중 하나를 사용하십시오. (대문자 K) $primarykey여야하며 $primaryKey그렇지 않으면 작동하지 않습니다.
Jeremy Harris

4
둘 이상의 필드가 기본 키로있는 경우 어떻게합니까?
Bagusflyer

@bagusflyer 농담 맞아? 하나의 데이터베이스 테이블에 둘 이상의 기본 키가 있습니까?
Novica89 2014 년

@bagusflyer Eloquent는 복합 키를 지원하지 않지만 여기에 좋은 해결 방법이 있으므로 $primaryKey = array('key1', 'key1'); github.com/laravel/framework/issues/5517#issuecomment-52996610
mopo922

참고로 Laravel 5.4에서는 모델 이름과 동일하면 더 이상 자체 PK를 설정할 필요가 없습니다 (그렇지 않으면 오류가 발생합니다).
Mint

14
class User extends Eloquent {

    protected $primarykey = 'admin_id';

}

그러나

class User extends Eloquent {

    protected $primaryKey = 'admin_id';

}

$ primaryKey 변수의 문자 K (대문자)에 유의하십시오.


10

복합 키 (문자열)를 사용하려는 경우

당신은 당신이 설정 확인해야 public $incrementing = false주는 laravel는 정수에 필드를 주조한다, 그렇지 않으면0

class User extends Model {

    protected $primaryKey = 'my_string_key';
    public $incrementing = false;

}

primaryKey를 텍스트 문자열 col으로 재정의했습니다. 컬렉션의 값이 정확했지만 col을 $ results-> primary_key로 참조했을 때 컬렉션 / 배열이 올바른 문자열을 표시했지만 0 만 반환합니다. primaryKey가 Object에서 INT 및 Incrementable로 표시되는 것을 알았을 때 추적하십시오. public $ incrementing = false로 설정해야했습니다.
G-Man

7

기본 키 변수는 대소 문자를 구분하며 $primaryKey작동 해야합니다 .

예:

protected $primaryKey = 'your_primary_key_id';

모델 클래스 내의 예 :

class User extends Eloquent {

    protected $primaryKey = 'your_primary_key_id';

}

1
$ fillable 배열에 추가해야합니까?
Anis

1
class User extends Eloquent {

    protected $primaryKey = 'admin_id';

}

Laravel 문서에 따라 :


Eloquent는 또한 각 테이블에라는 기본 키 열이 있다고 가정합니다 id. $primaryKey이 규칙을 재정의하기 위해 속성을 정의 할 수 있습니다 .

또한 Eloquent는 기본 키가 증가하는 정수 값이라고 가정합니다. 이는 기본적으로 기본 키가 자동으로 int로 캐스트된다는 것을 의미합니다. 비 증가 또는 숫자가 아닌 기본 키를 사용하려면 $incrementing모델 의 공용 속성을 false로 설정해야합니다 .


-3

기본 키를 할당하려면 ..->

class User extends Eloquent {

    protected $primaryKey='admin_id';

 }
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.