我有一个表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);
}
}
答案 0 :(得分:1)
您的show
中的SiteController
方法正在使用Site
对象。但是,该路由设置为仅采用siteId
。以下代码应根据您的设置方式为您工作。
public function show($site)
{
return Site::findOrFail($site);
}
对所有其他控制器方法都一样,因为您希望通过网址将site id
传递给控制器方法。