我正在使用 Laravel 基于 Dingo API 创建一个 API .
在我的 route ,我有:
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; Dingo 尚不支持 5。
最佳答案
您必须自己处理它并添加自定义错误,如here所述。 。 findOrFail()
将抛出 ModelNotFoundException
所以让我们捕获它:
API::error(function (Illuminate\Database\Eloquent\ModelNotFoundException $e){
return Response::make(['error' => 'Resource not found'], 404);
});
关于php - Laravel 中的模型没有 Dingo 的查询结果 - 如何在失败时做出 RESTful 响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28645259/