Gibt es eine schnelle Möglichkeit, Beziehungen anzuhängen, wenn sie nicht bereits angehängt sind. Ich verwende diesen Code, um die Beziehungen eines Modells zu aktualisieren.Laravel-Beziehungen anhängen, wenn nicht bereits angehängt
if (!empty($request->get('roles')) && is_array($request->get('roles'))) {
$message->Roles()->attach($request->get('roles'));
}
if (!empty($request->get('users')) && is_array($request->get('users'))) {
$message->Users()->attach($request->get('users'));
}
Aber ich bekomme diese Fehlermeldung, die ich dieser Fehler bin;
SQLSTATE [23000]: Integrität Einschränkungsverletzung: 1062 doppelte Eintrag '1-41' für die Taste 'primären' (SQL: Einfügen in
message_user
(message_id
,user_id
) Werte (1, 41), (1, 42) (1, 43), (1, 44), (1, 45), (1, 46), (1, 47), (1, 48), (1, 49), (1, 50))
Ich möchte vermeiden, durch eine sehr lange Liste von Array-Prüfung gehen, welche Benutzer nicht bereits angeschlossen sind und sie anhängen. Sag mir Bescheid, wenn dies der einzige Weg ist.
Ich denke etwas wie;
$message->Users()->attachIfNotAttached($request->get('users'));
MySQL unterstützt 'INSERT IGNORE', aber ich glaube nicht, Laravel auch der Fall ist. –
Ich denke, die einzige Lösung ist zu prüfen, ob die Beziehung für jeden Benutzer vor dem Anhängen existiert. – LogicDev
Was ist in '$ request-> get ('users')' gespeichert? Benutzer-IDs? –