gpt4 book ai didi

php - 使用 Laravel 5.3 模型绑定(bind)更新多条记录

转载 作者:行者123 更新时间:2023-11-28 23:17:23 25 4
gpt4 key购买 nike

我正在从 MySQL 中提取多条记录并通过模型绑定(bind)循环并用一些数据填充所有输入字段。

现在,我可以更改 2 个或 10 个或全部 26 个字段并点击更新按钮。我想更新所有记录。现在,我不知道 $id 在这里如何工作?通常我更新单个记录并且我有 $id 我只能找到并更新那个字段。但这里不是这种情况。我正在提取 13 条记录(或 26 个字段)。 13 field_1 和 13 field_2。如何全部更新?

我的代码

数据库

Table
-id
-name
-field1 (updating this one)
-field2 (updating this one)

路线

Route::get('/cat' , 'AdminController@cat');
Route::patch('/cat/{$id}/update','AdminController@cat_update');

Controller

public function cat(){

$cattfs = Catf::all();
return view('/cat',compact('cattfs'));
}

public function cat_update(Request $request, $id) // id = 1
{
$rules = array(
'field1' => 'required',
'field2' => 'required'
);

$validator = Validator::make(Input::all(), $rules);

if ($validator->fails()) {

return Redirect()->back()->withErrors($validator);

} else {

$cat = Cattf::find($id); //This wont work :/
$cat ->field1 = Input::get('field1');
$cat ->field2 = Input::get('field2');
$cat ->save();

return redirect('/cat');
}
}

观看次数

<div class="col-md-6" style="background-color:#fff">

<table class="table table-hover">
<thead>
<tr>
<th style="text-align: center">Product</th>
<th style="text-align: center">Pr</th>
<th style="text-align: center">Co</th>
</tr>
</thead>
<tbody>
@foreach ($cattos as $catto)
{!! Form::model($catto,[ 'method' =>'PATCH', 'url' => ['/cat/.$catto->id./update']]) !!}

<tr>
<td>{{$catto->name}}</td>
<td> {!! Form::text('field1' ,null , ['class'=>'form-control']) !!}</td>
<td> {!! Form::text('field2' ,null , ['class'=>'form-control']) !!}</td>
</tr>

@endforeach

<td colspan="3">
{!! Form::submit('UPDATE', ['class'=>'btn btn-primary btn-block']) !!}
{!! Form::close() !!}
</td>
</tr>
</tbody>
</table>

</div>

表单快照

fields snapshot each row is a record from database table

最佳答案

我不认为你可以用模型绑定(bind)来做到这一点(如果我错了请纠正我)。

您可以改为生成一组数据以发送到您的 Controller 。

例如:

{!! Form::open(['route' => 'catupdate']) !!}
@foreach ($cattos as $catto)
<tr>
<td>{{$catto->name}}</td>
<td>{!! Form::text('categories['.$catto->id.'][field1]', null, ['class'=>'form-control']) !!}</td>
<td>{!! Form::text('categories['.$catto->id.'][field2]', null, ['class'=>'form-control']) !!}</td>
</tr>
@endforeach
{!! Form::close() !!}

然后您应该在 Controller 中收到一个数组,您可以循环并更新每条记录。

public function catupdate()
{
$categories = request()->input('categories');

foreach($categories as $id => $values) {
$cat = Cattf::find($id);
$cat->field1 = $values['field1'];
$cat->field2 = $values['field2'];
$cat->save();
}
}

然后您还可以通过在请求文件中执行以下操作来验证数组

public function rules()
{
return [
'categories.*.field1' => 'required',
'categories.*.field2' => 'required'
];
}

这是未经测试的,是一个演示概念的示例

关于php - 使用 Laravel 5.3 模型绑定(bind)更新多条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43287574/

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