2017-01-19 4 views
1

最初に私は自分の追加のフィールドについては、このようなIDの配列を添付:私は、チェックボックスを持っているので、sync()を使用してイムその後sync()とattach()は連携していませんか?私のコントローラで

$property->features()->attach($additional_ids); 

$property->features()->sync($features); 

をしかし、私は、私のこれを持っているときに問題がありますattach()が機能しません。どのような提案を私はこれを修正することができますか?私がこれを取り除くと、sync()私の添付が機能しています。だからアイデアは、私は、機能のチェックボックスを持って、私はピボットテーブルにこのIDを格納するいくつかの追加features.Iの入力フィールドがあります。

答えて

3

sync()は、attach()のすべての変更を上書きします。だから、ちょうどmerge arrayssync()を使用します。どのsync without detaching意志

$property->features()->sync($features, false); 

$property->features()->sync(array_merge($features, $additional_ids)); 
+0

これは初めて$ additional_idsを覚えていますが、$機能のために何かを変更したときや、フォームを再度送信したときに消えてしまったのでしょうか? – uzhas

+0

@uzhas 'sync()'は、パラメータとして送信している配列内のリレーションを除くすべてのリレーションを削除します。 'sync()'の前に 'attach()'を使うのは意味がありません。 –

0

これを使用してください。

それとも、も呼び出すことができます。同じことをするでしょう

$property->features()->syncWithoutDetaching($features) 

関連する問題