如何更新foreach的数据?
数据的呈现方式如下:
css-loader
我想使用控制器功能更新数据库中的值。
我知道如何更新单个值,但是对于foreach,我不知道。
昨天我发布了另一个问题,但可能没有正确制定,没有人给我答案。我在这里发布,因为也许你有更多的信息。
非常感谢,非常感谢任何帮助。
答案 0 :(得分:2)
您应该创建一个允许接收值数组的函数
在您的视图中,您需要将所有表单元素名称设为数组。
@foreach ($translation as $locale)
<div class="form-group">
<label><strong>Locale</strong></label>
<textarea type="text" name="locale[]" rows="1">{{$locale->locale}}</textarea>
</div>
<div class="form-group">
<label><strong>Title</strong></label>
<textarea type="text" name="title[]" rows="1">{{$locale->title}}</textarea>
</div>
<div class="form-group">
<label><strong>Caption</strong></label>
<textarea type="text" name="caption[]" rows="1">{{$locale->caption}}</textarea>
</div>
<input type="hidden" name="locale_id[]" value="{{$locale->id}}"> // Make sure you add the id
@endforeach
然后在你的控制器上,你应该处理那些数组
function update(){
$locale_id = $request->locale_id;
$locale = $request->locale ;
$caption = $request->caption;
$title= $request->title;
foreach($locale_id as $key => $value){
DB::table('project_translations')->where('id', $value )->update([
'locale' => $locale[$key],
'title' => $title[$key],
'caption' => $caption[$key],
]);
}
}
答案 1 :(得分:1)
将name
属性更改为数组类型,如
<textarea type="text" class="form-control form-control-sm" id="locale" name="locale[]" rows="1" disabled>{{$locale->locale}}</textarea>
....
....
为id里面的id添加数组输入字段,如
<input name="id[]" value="{{$locale->id}}" hidden>
现在,在控制器发布功能中,
public function update(Request $request){
foreach($request->id as $key => $value){
// Find record to update with Model as your table model
$record = Model::find($value);
$record->locale = $request->locale[$key];
$record->title = $request->title[$key];
$record->caption = $request->caption[$key];
$record->save();
}
}
希望你明白。
答案 2 :(得分:1)
我认为您的 Aws::DynamoDB::Errors::NotFound ():
app/controllers/admins/sessions_controller.rb:32:in `login_aws'
app/controllers/admins/sessions_controller.rb:6:in `new'
被foreach
包围。
我建议:
<form>
属性更改为ID为当前区域设置的数组:name
name="locale[{{ $locale->id }}][title]"
更新每个区域设置,如下所示:foreach
答案 3 :(得分:1)
我想你可以试试这个:
@foreach ($translation as $locale)
<div class="form-group">
<label><strong>Locale</strong></label>
<textarea type="text" class="form-control form-control-sm" id="locale" name="locale[]" rows="1" disabled>{{$locale->locale}}</textarea>
<input type="hidden" name="locale[]" value="{{$locale->locale}}">
</div>
<div class="form-group">
<label><strong>Title</strong></label>
<textarea type="text" class="form-control form-control-sm" id="title" name="title[]" rows="1">{{$locale->title}}</textarea>
</div>
<div class="form-group">
<label><strong>Caption</strong></label>
<textarea type="text" class="form-control form-control-sm" id="caption" name="caption[]" rows="1">{{$locale->caption}}</textarea>
</div>
<input type="hidden" name="localId[]" value="{{$locale->id}}">
@endforeach
public function update(Request $request){
foreach($request->localId as $key => $value){
DB::table('DbName')->where('id', $value )->update([
'locale' => $request->locale[$key],
'title' => $request->title[$key],
'caption' => $request->caption[$key],
]);
}
}
希望这对你有用!!!