Нет результатов запроса для модели в Laravel с Dingo — как сделать RESTful ответ при сбое?

Я создаю API с Laravel на основе Dingo API.

В моих маршрутах у меня есть:

Route::api('v1', function () {
Route::resource('object', 'My\Namespace\MyController');
});

И в MyController:

class MyController extends \Illuminate\Routing\Controller {

use Dingo\Api\Routing\ControllerTrait;

public function index() {
return MyObject::all();
}

public function show($id) {
return MyObject::findOrFail($id);
}

}

Это означает, что api.domain.com/object звонки MyController@index, который работает. Так как в базе данных нет элементов, тогда выводится пустой массив json [],

api.domain.com/object/123 звонки MyController@show(123), Это согласно https://github.com/dingo/api/wiki/Responses. Однако, поскольку в базе данных нет результатов, я получаю:

No query results for model [My\Namespace\MyObject].

Я ожидаю, что это даст хорошую ошибку RESTful вместо этого. Как я могу это сделать?

В коде MyObject нет ничего особенного, это пустой класс, который расширяет Illuminate\Database\Eloquent\Model,

Я использую Laravel 4.2; 5 еще не поддерживается Dingo.

2

Решение

Вам придется разобраться с этим самостоятельно и добавить пользовательскую ошибку, как описано Вот. findOrFail() бросит ModelNotFoundException так что давайте поймем это:

API::error(function (Illuminate\Database\Eloquent\ModelNotFoundException $e){
return Response::make(['error' => 'Resource not found'], 404);
});
3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]