2017-06-19 5 views
4

Ich füge user_id, product_id mit einem zusätzlichen Feld an. Jedes Ding funktioniert gut, bis das zusätzliche Feld aktualisiert werden sollte. Wenn das Feld zum zweiten Mal gefüllt wird, anstatt es zu aktualisieren, wird ein weiteres zur Datenbank hinzugefügt. und das liegt auf der Hand, weil ich Attach statt Sync verwendet habe. Aber wenn ich sync verwende, erhalte ich einen Fehler.Laravel sync manytomany Fehler

dies ist mein Code:

$price = $request->input('price'); 
$product = Product::find($id); 
$product->users()->attach(Auth::id(), ['price' => $price]); 

und das ist der Fehler, den ich bekomme, wenn ich sync verwenden:

Argument 1 bestanden Illuminate \ Database \ Eloquent \ Relations \ BelongsToMany :: formatRecordsList() müssen vom Typ Array sein, integer

gegeben

Antwort

2

Sync-Methode ein Array von IDs akzeptiert auf der Pivot-Tabelle platzieren auch die Synchronisierungsmethode wird die Modelle aus der Tabelle gelöscht werden, wenn Modell nicht in Array existiert und Einsatz neue Elemente zur Pivot-Tabelle.

So müssen Sie

$product->users()->sync([Auth::id() => ['price' => $price]]); 
1

Die Sync-Methode akzeptiert ein Array von IDs tun, auf der Zwischen table.Any IDs zu setzen, die nicht in der gegebenen Anordnung sind aus der Zwischen table.So Sie entfernt wird sollte ein Array als erster Parameter an sync() Funktion übergeben als

$product->users()->sync([Auth::id() => ['price' => $price]]);