В модели Laravel я использую столбец JSON data
для хранения пользовательских данных. Данные JSON могут быть вложенными для организации, и все ключи должны иметь непустые / ненулевые значения.
На данный момент все клавиши жестко запрограммированы в виде data[key]
на интерфейсе. Если ранее сохраненный key
имеет его value
на внешнем интерфейсе, key
должен быть сброшен в методе обновления. Однако после проверки я получаю исходный массив обратно.
// ModelController.php
public function update(Request $request, Model $model)
{
// $request->data = ['key' => null, 'nested' => ['key' => null]]
function stripEmptyCustom($data) {
foreach ($data as $key => $value) {
if (is_array($data[$key])){
$data[$key] = stripEmptyCustom($data[$key]);
}
if (empty($value)){
unset($data[$key]);
}
}
return $data;
}
$request->data = stripEmptyCustom($request->data);
dump($request->data); // so far, so good
// $request->data = []
$attributes = $request->validate([
'name' => 'nullable',
'data' => 'array',
]);
dump($attributes); // $attributes['data'] =
// ['key' => null, 'nested' => ['key' => null]]
Как проверить запрос без сброса исходных данных?