Обновите данные JSON в Laravel 5.6 - PullRequest
0 голосов
/ 27 августа 2018

Проблема: необходимо обновить данные json в поле имен адресов.

bookcontroller:

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 Ответ

0 голосов
/ 27 августа 2018

@ Kristly D'sena, замените атрибут имени входа "addr" на "addr []" именем массива. Тогда и только тогда вы получите многоадресный адрес в формате массива в методе post и затем конвертируетеадреса полей в json с помощью json_encode

Замените приведенный ниже скрипт в файле 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...