laravel 路由中找不到页面错误

Page not found error in laravel routing

我是新人laravel,我已经写了路线

Route::resource('contract', 'ContractController');
Route::group(['prefix' => 'contract'], function () {
    Route::get('data', 'ContractController@data');
});

我的控制器文件是:

public function data(Datatables $datatables)
{
    $contracts = $this->contractRepository->getAll()
        ->get()
        ->map(function ($contract) {
            return [
                'id' => $contract->id,
                'start_date' => $contract->start_date,
                'end_date' => $contract->end_date,
                'description' => $contract->description,
                'name' =>  '',
                'user' => '',
            ];
        });

    return $datatables->collection($contracts)
        ->addColumn('actions', '@if(Sentinel::getUser()->hasAccess([\'contracts.write\']) || Sentinel::inRole(\'admin\'))
                                    <a href="{{ url(\'contract/\' . $id . \'/edit\' ) }}"  title="{{ trans(\'table.edit\') }}">
                                        <i class="fa fa-fw fa-pencil text-warning"></i> </a>
                                        @endif
                                 @if(Sentinel::getUser()->hasAccess([\'contracts.read\']) || Sentinel::inRole(\'admin\'))
                                 <a href="{{ url(\'contract/\' . $id . \'/show\' ) }}" title="{{ trans(\'table.details\') }}" >
                                        <i class="fa fa-fw fa-eye text-primary"></i> </a>
                                @endif
                                @if(Sentinel::getUser()->hasAccess([\'contracts.delete\']) || Sentinel::inRole(\'admin\'))
                                    <a href="{{ url(\'contract/\' . $id . \'/delete\' ) }}"  title="{{ trans(\'table.delete\') }}">
                                        <i class="fa fa-fw fa-times text-danger"></i></a>
                                 @endif')
        ->removeColumn('id')
        ->escapeColumns( [ 'actions' ] )->make();
}

当我 运行 url contract/data 时,我收到 404 not found 错误。在控制台中我也收到错误

No query results for model [App\Models\Contract].

请帮我解决问题

只需删除 Route::resource('contract', 'ContractController'); 或将其放在 Route::group(['prefix' => 'contract'], function () { Route::get('data', 'ContractController@data'); }); 之后,如下所示:

Route::group(['prefix' => 'contract'], function () {
    Route::get('data', 'ContractController@data');
});
Route::resource('contract', 'ContractController');

你在路由 /contract/data 上得到 404,因为路由器实际上从 Route::resource('contract', 'ContractController');

上的上层路由指向 ContractController@show 中的 contract/{contract}