Laravel Dingo FindOrFail returns 空数组

Laravel Dingo FindOrFail returns empty array

我有一个 table sites,其中包含以下列 ('id'、'path'、'site_link') 的站点列表。我已经在 Site 模型中编写 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);
    }
}

SiteController 中的 show 方法正在获取一个 Site 对象。然而,这条路线被设置为只走 siteId。根据您设置路线的方式,下面的代码应该适合您。

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

对所有其他控制器方法应用相同的方法,因为您希望通过 url 将 site id 传递给控制器​​方法。