2016-09-26 3 views
0

I가 다음과 같은 열이있는 모델 :Laravel 5.2 웅변 기본 키 다중 키

  • blog_id (fillabale)
  • 일 (채울 수)
  • 카운터

고유을 예를 들어를 사용하여이 표의 결과를 얻으려고 할 때마다 blog_id + date의 키

$model = BlogCounter::findOrNew(2,'2016-09-25'); 

또는

$model = BlogCounter::whereBlogId(2)->whereDate('date','=','2016-09-25')->first() 

내가지고있어 오류 :

column blog_counter.id does not exist

내가 기본 키를 무시하고 널 (null)로 설정하려/[ 'blog_id', '날짜']/'blog_id, date' 위의 어느 누구도이 ID로 원시를 가져 오려고하는이 낯선 사람의이 문제를 해결하지 못했습니다.

고유 키를 대신 사용하기 때문에이 테이블에 기본 키가 없습니다.

내가 누락 된 항목이 있습니까? Eloquent 모델을 기본 키없이 작동하도록하려면 어떻게해야합니까?

나는 지금 PostgreSQL 9.5를 사용하고 있습니다.

감사합니다.

+0

laravel이 설득력 모델의 키 속성에 대한 방법을 찾을 제공하기 때문에 당신은 할 수 없습니다. 따라서 기본 키 필드를 만들어야합니다. https://github.com/laravel/framework/issues/5355 –

+0

findOrNew를 사용하여 첫 번째 쿼리에서 게시 한 오류가 반환됩니다. 먼저 wheres/first를 사용하는 두 번째 쿼리에서 발생하는 오류는 무엇입니까? –

답변

0

Eloquent는 테이블에 id 열이있는 것으로 가정합니다. 귀하의 경우이 열의 이름은 blog_id이므로 Eloquent에 알려야합니다.

primaryKey 속성을 모델에 정의하면됩니다. 그것은 오래가 하나의 레코드를 가져 오기 위해 사용될 수있다 데이터베이스의 기본 키가 될 필요가 없습니다 :

class BlogCounter extends Model { 
    protected $primaryKey = 'blog_id'; 
} 
+0

@ edrzej.kurylo 내 "키"는 (고유 한) 두 필드의 조합입니다 날짜 + blog_id .. 이것은 내가 어려움을 겪고있는 것입니다 .. –

+0

Eloquent는 복합 키를 지원하지 않으므로 사용할 수 없습니다 *() 메소드를 사용하여 레코드를 가져옵니다. 자신의 논리를 모델에 추가해야합니다. –