Laravel 5.7 REST API, ошибка раздела обновления - PullRequest
0 голосов
/ 27 ноября 2018
Секция

Create, Delete, Show также работает.Я не знаю, в чем проблема.

Это мой запрос (когда я вызываю PUT маршрута ресурса):

============
Request body
============
name: John doe
detail: An insteresting detail
type: A fancy type

===============
Request Headers
===============
Accept: application/json
Authorization: Bearer my_secret_token

Ошибка

"message": "Нет результатов запроса для модели [App \ Product]."

Api \ Controller

public function update(Request $request, Product $product)
{
    $input = $request->all();


    $validator = Validator::make($input, [
        'name' => 'required',
        'detail' => 'required'
    ]);


    if($validator->fails()){
        return $this->sendError('Validation Error.', $validator->errors());       
    }


    $product->name = $input['name'];
    $product->detail = $input['detail'];
    $product->save();


    return $this->sendResponse($product->toArray(), 'Product updated successfully.');
}

Ответы [ 2 ]

0 голосов
/ 01 февраля 2019

Введите в папку вашего проекта

cd /laravel/your/path_of/api_project

и выполните следующую команду

php artisan route:list

, и у вас будет полная таблица, содержащая названия методов иих URL и каждый используемый метод (POST, GET, ...)

пример вывода ----

| PUT|PATCH | api/companys/{company}|  companys.update| App\Http\Controllers\CompanysController@update|
0 голосов
/ 27 ноября 2018

Если вы используете привязку модели маршрута (как кажется), обязательно используйте соответствующую конечную точку для обновления вашего ресурса:

PUT /products/{product}
// so this means, for example:
PUT /products/3

Затем Laravel автоматически найдет Продукт с idиз 3.

public function update(Request $request, Product $product) // <-- here is injected.
{
    // the rest of your code..
}

Другой вариант - найти ресурс вручную.Если ваш маршрут такой:

PUT /products/{id}

Найдите его, если хотите легко управлять ответом:

public function update(Request $request)
{
    // find it
    $product = Product::find($request->get('id'));

    // check if exists
    if (! $product)
    {
        return response()->json(['errors' => 'This product does not exist, dude!'], 404);
    }

    // the rest of your code..
}

или вот так, чтобы выдать исключение:

public function update(Request $request)
{
    // find it
    $product = Product::findOrFail($request->get('id'));

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