Я не могу обновить поле в Laravel 5 - PullRequest
0 голосов
/ 28 мая 2018

Все нормально в Get, Post, Delete в моем коде laravel.Но я не могу обновить поле.

Обновление функции в BookController.php

$ data = $ this-> request-> all ();

Если показать dd ($ data), оно будет нулевым.

Какая причина?Помогите мне, пожалуйста.

Код BookRequest.php:

<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class BookRequest extends FormRequest
{
    public function authorize()
    {
        return true;
    }
    public function rules()
    {
        return [
            'name' => 'required|max:255',
            'coment' => 'required'
        ];
    }
}

Код BookController.php:

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Book;
use Illuminate\Http\Response;
use App\Http\Requests\BookRequest;
class BookController extends Controller
{
protected $request;
protected $book;
public function __construct(Request $request, Book $book) {
    $this->request = $request;
    $this->book = $book;
}
public function update(BookRequest $request, $id) {
    $data = $this->request->all();
    $book = $this->book->find($id);
    $book->name = $data['name'];
    $book->coment = $data['coment'];
    $book->save();
    return response()->json(['status' => Response::HTTP_OK]);
}
}

Ответы [ 3 ]

0 голосов
/ 28 мая 2018

На вашем месте я бы заменил контроллер, как показано ниже:

<?php
namespace App\Http\Controllers;


use App\Book;
use Illuminate\Http\Response;
use App\Http\Requests\BookRequest;

class BookController extends Controller
{
    public function update(BookRequest $request, $id) {

        $book = Book::find($id);
        $book->update($request->all());
        return response()->json(['status' => Response::HTTP_OK]);
     }
}

Если вы установили привязку Route: модель, то вы можете упростить код.Приведенный ниже код работает, только если в вашем файле маршрута есть настройка Route :: model web.php.

Проверьте эту документацию для более подробной информации:

https://laravel.com/docs/5.6/routing#route-model-binding

public function update(BookRequest $request, Book $book) {
    $book->update($request->all());
    return response()->json(['status' => Response::HTTP_OK]);
 }
0 голосов
/ 28 мая 2018

Я решил.

Мой запрос: http://127.0.0.1:8000/api/book POST, ключ: _method: PUT

Обновление кода

$data = $request->all();
$book = Boook::find($id);
$book->name = $data['name'];
$book->coment = $data['coment'];
$book->save();

С уважением.

0 голосов
/ 28 мая 2018

Попробуйте: -

$request->all();

вместо

$this->request->all()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...