gpt4 book ai didi

php - 使用从表单收到的输入更新我的产品表中的价格列

转载 作者:行者123 更新时间:2023-12-04 01:16:21 24 4
gpt4 key购买 nike

预先感谢您的协助。

我的数据库中有一个表。 迁移

Schema::create('products', function (Blueprint $table) {
$table->id();
$table->integer('group');
$table->string('code');
$table->string('name');
$table->double('price');
$table->timestamps();
});

我从数据库中检索所有产品,并根据我的 View 中的 对它们进行排序。 input name = "{{id}}"input value = "{{price}}"

请查看我的表单:

<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>

提交表单后,当我在我的 Controllerdd($request) 时,我得到以下结果。

+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 id206,这是从我的表单收到的最后一个条目,所以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']));

请让我知道我在哪里从马车上掉下来了?

最佳答案

它可以像这样简化很多:

collect($request->except(['_token']))->each(static function($item, $key) {
return DB::table('products')->where('id', $key)->update([
'price' => $item
]);
})

没有必要对您正在做的所有这些映射做过于复杂的事情,这最终会导致您遇到的问题。我的猜测是映射/请求数据的顺序不一样,所以当你在 foreach 中执行第二个 mapWithKeys 时,它与你正在迭代的当前 $product 不匹配。

希望对您有所帮助。

关于php - 使用从表单收到的输入更新我的产品表中的价格列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63299397/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com