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
传递给控制器方法。
我有一个 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
传递给控制器方法。