Laravel Dingo FindOrFail返回空数组

时间:2018-08-12 12:16:42

标签: php database laravel-5 dingo-api

我有一个表sites,其中包含具有以下列(“ id”,“ path”,“ site_link”)的网站列表。我已经在网站模型public $timestamps = false;中编写了代码,这样它就不会花时间去做我不需要的东西。

我也有以下路线

$api = app('Dingo\Api\Routing\Router');

$api->version('v1', function ($api) {
   $api->get('sites', 'App\Http\Controllers\SiteController@index');
   $api->get('sites/{site}', 'App\Http\Controllers\SiteController@show');
});

第一个可以正常工作并返回所有数据,但是第二个仅返回[]。 我的控制器在下面

namespace App\Http\Controllers;

use Illuminate\Http\Request;

Use App\Site;

class SiteController extends Controller
{
    public function index()
    {
        return Site::all();
    }

    public function show(Site $site)
    {
        return Site::findOrFail($site);
    }

    public function store(Request $request)
    {
        $site = Site::create($request->all());

        return response()->json($site, 201);
    }

    public function update(Request $request, Site $site)
    {
        $site->update($request->all());

        return response()->json($site, 200);
    }

    public function delete(Site $site)
    {
        $site->delete();

        return response()->json(null, 204);
    }
}

1 个答案:

答案 0 :(得分:1)

您的show中的SiteController方法正在使用Site对象。但是,该路由设置为仅采用siteId。以下代码应根据您的设置方式为您工作。

public function show($site)
{
    return Site::findOrFail($site);
}

对所有其他控制器方法都一样,因为您希望通过网址将site id传递给控制器​​方法。