【问题标题】:Laravel Dingo FindOrFail returns empty arrayLaravel Dingo FindOrFail 返回空数组
【发布时间】:2019-01-19 09:09:52
【问题描述】:

我有一个表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);
    }
}

【问题讨论】:

    标签: php database laravel-5 dingo-api


    【解决方案1】:

    SiteController 中的show 方法采用Site 对象。但是,该路线设置为仅采用siteId。根据您设置路线的方式,下面的代码应该适合您。

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

    同样适用于所有其他控制器方法,因为您想通过 url 将 site id 传递给控制器​​方法。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-26
    • 2021-10-05
    • 1970-01-01
    • 1970-01-01
    • 2020-08-01
    • 1970-01-01
    • 2016-02-01
    • 2021-09-08
    相关资源
    最近更新 更多