2013-09-29 55 views
13

我試圖更新數據透視表中的多對多關係中的其他列數據。laravel4更新數據透視表中的附加列

我有兩個表 - 預留和資源與數據透視錶鏈接。我可以附加並正在使用模型。不過,我正在努力更新數據透視表中的其他列之一。

我有一個對象:「$保留」從該對象我創建另一個對象$資源使用:使用foreach循環

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

然後我迭代通過$resources如下

foreach($resources as $resource) {...} 

然後我想更新一個名爲gcal_id的列,並使用以下內容:

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

如果我var_dump模型,我可以看到該屬性存在到正確的值,但在數據庫本身的條目並未更新 - 所以保存不起作用

我有兩列關係列中列與此:

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

鑑於我有資源對象如何正確更新數據透視表中的列並保存到數據庫?

感謝

回答

24

之後,你設置在樞軸屬性:

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

你似乎保存資源而不是樞軸:如果你想

$resource->save(); 

樞軸被保存,節省資源是不夠的。呼叫保存在支點代替:

$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

爲我工作
相關問題