2013-09-29 4 views
13

여러 피어 테이블의 추가 열 데이터를 여러 관계로 업데이트하려고합니다.laravel4 피봇 테이블의 추가 열을 업데이트하십시오.

두 개의 테이블 - 피벗 테이블과 연결된 예약 및 리소스가 있습니다. 모델에 첨부하여 작업 할 수 있습니다. 그러나 피벗 테이블에서 추가 열 중 하나를 업데이트하는 데 어려움을 겪고 있습니다.

나는 개체가 : 내가 사용하여 다른 객체 $ 리소스를 생성하여 해당 객체 '$ 예약'하십시오 foreach 루프를 사용하여 $resources 통해

$resources = $reservation->resource()->get(); 

그때 반복하고 있습니다를

foreach($resources as $resource) {...} 
을 다음과 같이

그런 다음 gcal_id라는 열을 업데이트하고 다음을 사용하여 다음을 사용하고 있습니다.

$resource->pivot->gcal_id = "TEST"; 
$resource->save(); 

내가 볼 수있는 모델을 위해서 var_dump 경우 속성은 올바른 값으로 존재하지만 데이터베이스 자체의 항목이 업데이트되지 않는 - 그래서 저장

작동하지 않습니다 나는 관계의 양쪽에 나열된 열이 이것에 : 나는 자원 객체가 어떻게 피벗 테이블에 제대로 열을 업데이트하고 데이터베이스에 저장할 수 있습니다 감안할 때

->withPivot('start', 'end', 'quantity', 'product_id','gcal_id') 

? 당신이 원하는 경우

$resource->save(); 

: 당신은 자원하지 피벗을 저장하는 것

$resource->pivot->gcal_id = "TEST"; 

:

감사

답변

24

그 후에는 피벗에 대한 속성을 설정 피벗 (pivot)을 저장하면 리소스를 절약하는 것만으로는 충분하지 않습니다. 대신 피벗에 저장 호출

$resource->pivot->gcal_id = "TEST"; 
$resource->pivot->save(); 
+0

감사합니다. 너. 나는 아직도 내 머리 속의 관계를 알지 못한다. 나는 그 방법을 올바르게하는 데 어려움을 겪고있다. 솔루션이 효과적이었습니다 - 내가 조작하고있는 모델을 고려해야합니다. – Ray

3

대신 save 방법의 대안 방법은 Illuminate\Database\Eloquent\Relations\BelongsToMany\updateExistingPivot()

$reservation->resource()->updateExistingPivot($resource_id, ['gcal_id' => 'TEST']); 

또는

$reservation->resource()->updateExistingPivot([1, 4, 5, 6], ['gcal_id' => 'TEST']); 

Laravel 4.2

에서 나를 위해이 작품
관련 문제