#php #mysql #laravel
#php #mysql #laravel
Вопрос:
Я новичок в разработке laravel. Мне нужно обновить значение динамического поля ввода. Я перепробовал так много кодов, но не могу обновить. Я получаю сообщение об ошибке «Недопустимое смещение строки ‘house_no’. Я привел ниже, используя свой код
Мой блейд-файл
<div>
<table>
<tr>
<th>House No</th>
<th>Street Name</th>
<th>Area</th>
<th>Pincode</th>
</tr>
@foreach ($address as $addres)
<tr>
<td><input type="text" name="settings[{{$addres->house_no}}]" value="{{ $addres->house_no}}" class="form-control" /></td>
<td><input type="text" name="settings[{{$addres->street_name}}]" value="{{ $addres->street_name}}" class="form-control" /></td>
<td><input type="text" name="settings[{{$addres->area}}]" value="{{ $addres->area}}" class="form-control" /></td>
<td><input type="text" name="settings[{{$addres->pincode}}]" value="{{ $addres->pincode}}" class="form-control" /></td>
<tr>
@endforeach
</table>
</div>
</div>
Мой файл контроллера
public function updateUser(Request $request, $id)
{
$user = $request->all();
foreach ($request->settings as $key => $value) {
Address::update([
'house_no' => $value['house_no'],
'street_name' => $value['street_name'],
'area' => $value['area'],
'pincode' => $value['pincode'],
]);
}
}
Комментарии:
1. пожалуйста, укажите больше примеров источников, связанных с вашей проблемой
2. это не то, как вы получаете доступ к значениям :/
3.
$value
в вашем цикле есть строка… ваш массив$request->settings
имеет только одно измерение4. см. Здесь для получения входных данных laravel.com/docs/8.x/requests#retrieving-input
5. Как я могу этого добиться?
Ответ №1:
Вам нужно будет добавить индекс к входным данным массива, которые вы создаете, где ключом для элемента является id
значение записи ( settings[key][attribute]
) . На данный момент у вас есть одномерный массив, который на обратной стороне будет содержать только 1 набор атрибутов для адреса.
Предполагая $addresses
, что это красноречивый набор моделей:
@foreach ($addresses as $key => $address)
<tr>
<td><input type="text" name="settings[{{ $key }}][house_no]" value="{{ $address->house_no}}" class="form-control" /></td>
<td><input type="text" name="settings[{{ $key }}][street_name]" value="{{ $address->street_name}}" class="form-control" /></td>
<td><input type="text" name="settings[{{ $key }}][area]" value="{{ $address->area}}" class="form-control" /></td>
<td><input type="text" name="settings[{{ $key }}][pincode]" value="{{ $address->pincode}}" class="form-control" /></td>
<tr>
@endforeach
Тогда ваш цикл на обратной стороне может повторять «наборы» настроек:
foreach ($request->input('settings', []) as $key => $value) {
Address::whereKey($key)->update(
'house_no' => $value['house_no'],
'street_name' => $value['street_name'],
'area' => $value['area'],
'pincode' => $value['pincode'],
]);
}
Комментарии:
1. Спасибо за ваш ответ. Я использовал этот код, и теперь получаю ошибку Undefined index: house_no
2. @Karthika извините, это была моя ошибка… обновлены имена ключей во входных данных формы