Заранее благодарю за помощь.
У меня есть таблица в моей базе данных. Migration
.
Schema::create('products', function (Blueprint $table) {
$table->id();
$table->integer('group');
$table->string('code');
$table->string('name');
$table->double('price');
$table->timestamps();
});
Я извлекаю все продукты из базы данных и сортирую их согласно group
в моем view
. input
name = "{{id}}"
и input
value = "{{price}}"
См. Мой form
:
<form method="POST" enctype="multipart/form-data" action="{{route('product.update')}}">
@csrf
<ul class="nav nav-pills mb-3" id="pills-tab" role="tablist">
<li class="nav-item">
<a class="nav-link active" id="pills-ns_890-tab" data-toggle="pill" href="#ns_890_main"
role="tab" aria-controls="pills-ns_890" aria-selected="true">KX-NS890</a>
</li>
</ul>
<div class="tab-content" id="pills-tabContent">
<div class="tab-pane fade show active" id="ns_890_main" role="tabpanel" aria-labelledby="pills-ns_890-tab">
@foreach($main_890 as $item)
<div class="form-group row">
<label for="{{$item->id}}" class="col-md-4 col-form-label text-md-right">{{$item->code. ' ' .$item->name}}</label>
<div class="col-md-6">
<div >
<input name="{{$item->id}}" type="number" min="0" id="{{$item->id}}" class="form-control @error('{{$item->id}}') is-invalid @enderror"
value="{{$item->price}}" autocomplete="{{$item->id}}" required autofocus>
</div>
</div>
</div>
@endforeach
</div>
</div>
<div class="form-group row mb-0">
<div class="col-md-6 offset-md-4">
<button type="submit" class="btn btn-primary">
{{ __('Save and Continue') }}
</button>
</div>
</div>
</form>
После отправки формы я получаю следующее, когда dd($request)
в моем Controller
.
+request: Symfony\Component\HttpFoundation\ParameterBag {#44 ▼
#parameters: array:187 [▼
"_token" => "XdnsoU9sqtgYpwFAqGQRM2fTde6mYJhhwJL3a3R2"
119 => "8461"
120 => "9682"
121 => "501"
122 => "2008"
123 => "16141"
124 => "5385"
125 => "9122"
126 => "3310"
127 => "1692"
128 => "2811"
129 => "1686"
130 => "2811"
131 => "1506"
132 => "1064"
133 => "4078"
134 => "8329"
И dd($request)
заканчивается следующим образом:
115 => "115"
116 => "2660"
117 => "730"
118 => "8400"
28 => "1200"
29 => "75"
30 => "95"
31 => "68"
32 => "243"
33 => "474"
202 => "56"
203 => "1990"
204 => "760"
205 => "760"
206 => "115"
Причина, по которой я включаю последнюю часть dd($request)
, заключается в том, что когда форма отправлена, она примет значение, присвоенное 119
, которое равно 8461
, но в обновлениях базы данных запись where
id
равна 206
, последняя запись, полученная из моей формы, поэтому 206 => "115"
становится 206 => "8461"
, это единственная запись, которая затем обновляется в базе данных.
Я пытаюсь обновить столбец цен по id значением, полученным из формы.
См. мой код ниже:
$products = collect($request->except(['_token']))
->mapWithKeys(function($item, $key) {
return [$key => ['price' => $item]];
})->all();
foreach ($products as $product){
$id = collect($request->except(['_token']))->mapWithKeys(function ($item){
return ['id' => $item];
});
DB::table('products')->
where('id', $id)->
update(array('price' => $product['price']));
Пожалуйста, сообщите мне, где я упал с вагона?