在 laravel 5.6 中更新 json 数据
Posted
技术标签:
【中文标题】在 laravel 5.6 中更新 json 数据【英文标题】:Update json data in laravel 5.6 【发布时间】:2019-02-01 15:37:27 【问题描述】:问题:需要更新地址名称字段中的json数据。
图书控制器:
public function edit(Book $book)
return view('books.edit',compact('book'));
public function update(Request $request, Book $book)
$book->update($request->all());
return redirect()->route('books.index')->with('success','Book updated successfully');
edit.blade.php
<form action=" route('books.update',$book->id) " method="POST">
@csrf
@method('PUT')
<div class="row">
<div class="col-xs-12 col-sm-12 col-md-12">
<div class="form-group">
<strong>Name:</strong>
<input type="text" name="name" value=" $book->name " class="form-control" placeholder="Name">
</div>
</div>
<?php $num=1 ?>
@foreach($book->address as $value)
<div class="col-xs-12 col-sm-12 col-md-12">
<div class="form-group">
<strong>Address<?php echo $num ?> :</strong>
<input type="text" name="addr" value=" $value['address'] " class="form-control" placeholder="Address">
</div>
</div>
<div class="col-xs-12 col-sm-12 col-md-12">
<div class="form-group">
<strong>Country <?php echo $num ?>:</strong>
<input type="text" name="country" value=" $value['country']" class="form-control" placeholder="Country">
</div>
</div>
<?php $num++ ?>
@endforeach
<div class="col-xs-12 col-sm-12 col-md-12 text-center">
<button type="submit" class="btn btn-primary">Submit</button>
</div>
</div>
</form>
如何更新 json 数据?
我正在使用 postgreSQL ................................... ..................................................... .............................谢谢
【问题讨论】:
【参考方案1】:@Kristly D'sena,将输入名称属性“addr”替换为“addr[]”为数组的名称,然后只有这样你才能在post方法中获得数组格式的多地址,然后将它们转换使用 json_encode
将字段地址放入 json在你的 edit.blade.php 文件中替换下面的脚本。
@foreach($book->address as $value)
<div class="col-xs-12 col-sm-12 col-md-12">
<div class="form-group">
<strong>Address<?php echo $num ?> :</strong>
<input type="text" name="addr[]" value=" $value['address'] " class="form-control" placeholder="Address">
</div>
</div>
<div class="col-xs-12 col-sm-12 col-md-12">
<div class="form-group">
<strong>Country <?php echo $num ?>:</strong>
<input type="text" name="country[]" value=" $value['country']" class="form-control" placeholder="Country">
</div>
</div>
<?php $num++ ?>
@endforeach
在 bookcontroller.php 文件中更改更新方法
public function update(Request $request, Book $book)
$inputs = $request->all();
$addr = ($request->addr);
$country = ($request->country);
$final_address = array();
foreach ($addr as $key => $value)
$final_address[] = array('address' => $value, 'country'=>$country[$key] );
$inputs['address'] = json_encode($final_address);
$book->update($inputs);
return redirect()->route('books.index')->with('success','Book updated successfully');
这样你就可以更新地址字段的json数据了。
【讨论】:
我有这种 json ["address": "gdfg", "country": "fd", "address": "dg", "country": "df" , "address": "gd", "country": "dfg"] 在地址栏中 @KristlyD'sena 我已根据您的 json 格式更新了我的答案,请尝试使用最新的答案,希望更新后的答案能解决您的问题。 异常 :( InvalidArgumentException 尾随数据 @KristlyD'sena,我不知道您存储完整地址详细信息的表列名,所以我假设列名“地址”并保留 $inputs['address'],Hense 替换"$inputs['address']" 键中的数据库列名。前任。如果您的列名是表中的“address_detail”,则 $inputs['address_detail'] = $final_address.我希望你能明白我的意思。 :) 列名是地址,当我使用 var_dump($inputs['address']);这个,然后错误来了 ErrorException (E_NOTICE) Undefined index: address and array (size=5) and var_dump($inputs);给出 '_method' => string 'PUT' (length=3) 'name' => string 'kajal' (length=5) 'addr' => array (size=3) 0 => string 'gdfg' (length= 4) 1 => 字符串 'dg' (length=2) 2 => 字符串 'gd' (length=2) 'country' => 数组 (size=3) 0 => 字符串 'fd' (length=2) 1 => 字符串 'df' (length=2) 2 => 字符串 'dfg' (length=3)以上是关于在 laravel 5.6 中更新 json 数据的主要内容,如果未能解决你的问题,请参考以下文章
作曲家在将 laravel 更新到 5.6 时卡在“发生了变化,再次查看所有规则”
如何在 Laravel 框架中降级? (5.6 至 5.5)
Laravel 5.6:升级 composer.json 后调用未定义的方法 ...\Store::getToken()