2016-12-02 1 views
0

복합 키가 2 개있는 하나의 데이터베이스 테이블에서 레코드의 변경 내용을 저장하려고합니다. Model :: updateOrCreate 또는 Model :: firstOrCreate 메서드를 사용하려고하면 id가 없다는 데이터베이스에서 오류가 발생합니다. laravel이 쿼리를 만들 때 내가 언급 한 primery 키를 무시하는 것처럼 보입니다.Laravel Eloquent updateOrCreate composite key

내 모델 : 내가 "기본 키"속성이있을 때

CatalogoCatLingua::updateOrCreate(
[ 
    "cataloguecategory_id"=>$trad["category"], 
    "language_id"=>$trad["language"] 
],[ 
    "name"=>$trad["langName"], 
    "description"=>$trad["langDescription"] 
] 
); 

내가 오류 :

class CatalogueCatLanguage extends Model 
{ 
    public $incrementing = false; 
    protected $table = "CatalogueCatLanguages"; 
    protected $fillable = ["cataloguecategory_id","language_id","name","description"]; 
    protected $primaryKey = ["cataloguecategory_id","language_id"]; 
} 

컨트롤러 방법을 내 코드

불법 입력 오프셋 비우기 또는 비우기

ROR 나는이 때 "기본 키"속성은 주석 얻을 :

SQLSTATE [42S22] : 발견되지 칼럼 : '절 곳'

이미 여러 조합을 시도했습니다에 1054 알 수없는 열 'ID를' 그리고이 일을하는 방법, 그러나 나는이 오류의 원인이 무엇인지 모르겠다.

감사합니다.

답변

0

Laravel은 복합 기본 키를 지원하지 않습니다 (해결 방법은 this입니다). 여기서 문자열 만 사용할 수 있습니다.

protected $primaryKey = "cataloguecategory_id";