【问题标题】:Update json data in laravel 5.6在 laravel 5.6 中更新 json 数据
【发布时间】: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 ................................... ..................................................... .............................谢谢

【问题讨论】:

    标签: json laravel 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)
    猜你喜欢
    • 2018-07-29
    • 2019-03-13
    • 2019-01-22
    • 2023-04-04
    • 1970-01-01
    • 2018-11-23
    • 1970-01-01
    • 2019-05-05
    • 2020-10-02
    相关资源
    最近更新 更多