Php 没有对带有野狗的Laravel模型的查询结果-如何对故障做出RESTful响应?

Php 没有对带有野狗的Laravel模型的查询结果-如何对故障做出RESTful响应?,php,api,rest,laravel,dingo-api,Php,Api,Rest,Laravel,Dingo Api,我正在使用基于的Laravel创建一个API 在我的路线中,我有: Route::api('v1', function () { Route::resource('object', 'My\Namespace\MyController'); }); 在MyController中: class MyController extends \Illuminate\Routing\Controller { use Dingo\Api\Routing\ControllerTrait;

我正在使用基于的Laravel创建一个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)
。这是根据。但是,由于数据库中没有结果,我得到:

没有模型[My\Namespace\MyObject]的查询结果。
我希望这会产生一个很好的RESTful错误。我该怎么做?

MyObject的代码没有什么特别之处,它是一个扩展了
illumb\Database\elounce\Model
的空类


我使用的是Laravel4.2;Dingo还不支持5。

您必须自己处理它,并按说明添加自定义错误
findOrFail()
将抛出一个
ModelNotFoundException
,我们来看看:

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

您使用的是什么版本的Laravel?4还是5?@lukasgeiter抱歉,忘了。我正在使用Laravel4.2,因为野狗还不支持5。你在你的控制器中使用
控制器Rait
吗?@Vohuman我使用,是的,我会把它添加到我的问题中。我很高兴看到提问者反应如此之快。很好,这很有道理,谢谢。那么,把代码放在哪里最好呢?这是我自己的软件包-我应该把它放在ServiceProvider中吗?是的,在ServiceProvider中是一个完美的地方:)@CamilStaps确切地说:)那只是Laravels
Response
facade。(
illumb\Support\Facades\Response
)。但是全局名称空间中有一个别名,所以您甚至不需要导入它…啊,我明白了。。。您也只需执行
\Response::make()
使用Response在顶部。或者像您现在可能做的那样
使用light\Support\Facades\Response