Ich versuche, Daten an meine 3-Wege-Pivot-Tabelle (bestehend aus einer User_id, Respondent_id und Company_id, die zusammen den Composite-Primärschlüssel ist).Laravel 5.5; Doppelte Eingabe auf 3-Wege-Pivot-Tabelle mit 3 Composite-Primärschlüssel
Wenn die Daten bereits in der Tabelle vorhanden erhalte ich eine doppelte Schlüsselnachricht (duh)
Ich habe versucht, dies zu verhindern, indem syncWithoutDetaching verwenden, aber es wirft immer noch eine doppelte Schlüssel Nachricht
Was ich versuchte zu tun ist folgende:
class Respondent extends Authenticatable
{
public function companies()
{
return $this->belongsToMany('App\Models\Company', 'company_user_respondent');
}
public function attachPivot($company_id, $user_id)
{
//This will attach but if the keys exist it will send a duplication error
return $this->companies()->attach($company_id, ['user_id' => $user_id]);
}
}
Außerdem habe ich versucht, dies mit dem attachPivot Methode
public function attachPivot($company_id, $guide_id)
{
//Will allso send a duplication error, using just sync works but of course it will clean up my table which is not the goal.
return $this->companies()->syncWithoutDetaching([1 => ['company_id' => $company_id, 'guide_id' => $guide_id]]);
}
Ich könnte meine DB überprüfen, ob der Datensatz existiert, aber eine Abfrage jedes Mal zu tun ist nicht mein wünschenswertes Ziel, mein wünschenswertes Ziel ist, dass kein Datensatz eingefügt würde, ohne einen Fehler zu werfen oder die Tabelle ohne Abtrennen zu synchronisieren.