2017-04-04 41 views
0

例如保存後模型不顯示在關係上嗎?

$user->transactions()->save($transaction); 

dump($transaction->id); // id: 4 
dd($user->transactions); // last id is 3 

已儲存在$user->transactions不出來的$transaction。這是一個多態性的關係。

回答

0

當您通過關係保存模型時,所有Laravel都會設置適當的外鍵。它不會將新保存的模型設置爲關係或將其添加到集合中。

如果您想要更新關係的模型使用fresh函數。

$user->transactions()->save($transaction); 
$user = $user->fresh('transactions'); 

編輯答案更新以下@ JCLee的校正分配的$user->fresh()結果。

+0

不適用於我。如果它有什麼不同,這是一種多態關係。 –

+0

嗯。我之前沒有使用'fresh'來重新載入關係,但這是源代碼所建議的正確用法。 https://github.com/illuminate/database/blob/master/Eloquent/Model.php#L922 – fubar

+1

我明白了爲什麼。 '$ user-> fresh('transactions');'返回刷新模型,但不刷新原始模型。所以'$ user = $ user-> fresh('transactions');'工作。 –