In meinem Controller auf null erhalten eine Illuminate\Http\Request
anfordern, die einige Daten mit Werten, die gleich einer leeren Zeichenfolge enthält:Änderungsanforderung Eingabewerte aus leeren String in Laravel
dd($request->input())
//output
array:5 [▼
"_token" => "K43q88mR5zQRqVPAuYX5IWtQ1khQ24JTsuxl8mz4"
"param1" => "1"
"param2" => "2"
"param3" => ""
"param4" => ""
]
(im Grunde das passiert, wenn der Benutzer hatte gemacht in Form keine Auswahlen erstellen, aber aufgrund Frontend Einschränkungen see here, mir nicht in der Lage bin, die Form des Antrags zu ändern, so von den leeren String-Werte auszuschließen)
die requ an den Server gesendet werden est Eingabedaten werden verwendet, um Beziehungen zu Modellen anzuhängen. Zum Beispiel:
$book->authors()->attach($request->input('param1'));
Das Problem ist, dass, wenn der Eingabewert auf die leere Zeichenfolge ""
die obige Zeile ein QueryException
gleich wirft, da sie einen Fremdschlüssel gleich ""
zur Schwenk Tabelle hinzuzufügen versucht.
Auf der anderen Seite habe ich festgestellt, dass, wenn der Wert null
ist statt ""
, die attach()
Methode nicht ausgeführt wird und somit keine Ausnahme wirft, weder die Datenbank aktualisiert, die genau das Verhalten, das ich will, wenn der Benutzer im Eingabeformular keine Auswahl getroffen hat.
Meine Frage ist Wie kann ich die Anfrage Werte von ""
zu null
ändern? Mein erster Gedanke war, eine Hilfsfunktion zu erstellen, die über das Anforderungseingabearray iteriert und "" mit Null ersetzt und sie in der Steuerung verwendet. ABER es scheint keine gute Idee für mich zu sein, da dies mögliche unerwünschte Validierungsfehler nicht verhindern würde , wenn Sie die Formularanforderungsvalidierung verwenden.
Irgendwelche Ideen bitte ???
Vielen Dank im Voraus
Danke dafür, aber jeder, der es benutzt, möchte vielleicht explizit nach der Zeichenkette '0' suchen, die absolut gültig ist. 'if ($ Wert! == '0' && leer ($ Wert)) {' –