В мой контроллер я получаю Illuminate\Http\Request
запрос, который содержит некоторые данные со значениями, равными пустой строке:Запрос на изменение входных значений из пустой строки в нуль в Laravel
dd($request->input())
//output
array:5 [▼
"_token" => "K43q88mR5zQRqVPAuYX5IWtQ1khQ24JTsuxl8mz4"
"param1" => "1"
"param2" => "2"
"param3" => ""
"param4" => ""
]
(в основном это происходит, когда пользователь имел сделал не выбор в создании формы, но из-за ограничений в веб-интерфейсе see here, я не умею менять форму запроса так, чтобы исключить пустые строковые значения от отправки на сервер)
Requ est входные данные используются для привязки отношений к моделям. Например:
$book->authors()->attach($request->input('param1'));
Проблема заключается в том, что, когда входное значение равно пустой строке ""
выше линии бросает QueryException
, так как он пытается добавить внешний ключ равен ""
в сводной таблице.
С другой стороны, я не заметил, что если значение null
вместо ""
, метод attach()
не выполняется, и, таким образом, не генерирует исключение, ни обновляет базу данных, которая точно поведение, я хочу, когда пользователь не сделал выбор в форме ввода.
Мой вопрос: Как изменить значения запроса от ""
до null
? Моя первая мысль заключалась в том, чтобы создать вспомогательную функцию, которая выполняет итерацию над массивом ввода запроса и заменяет «" на нуль и использует его в контроллере, но для меня это не кажется хорошей идеей, потому что это не предотвратит возможные нежелательные ошибки проверки , при использовании проверки запроса формы.
Любые идеи, пожалуйста ???
Спасибо заранее
Благодарим за это, однако любой, кто использует его, может захотеть проверить экспликацию на строку «0», которая совершенно верна. 'if ($ value! == '0' && empty ($ value)) {' –