如何通过from查找数据库记录


Lravel 5.1 How to find database records through a from?

在我的应用程序的管理区域,我想有一个表单,通过它的管理员可以找到一个项目的id和显示那里的项目详细信息。实现这一点的最佳方法是什么?这是我尝试过的:

//route
Route::get('admin/projects/{project_id}', 'AdminController@showProject');
//form
    {!! Form::open(['action' => 'AdminController@showProject', 'method' => 'get']) !!}
        {!! Form::label('project_id', 'Project Id', ['class' => 'control-label']) !!}
            {!! Form::text('project_id', null, ['class' => 'form-control']) !!}
        {!! Form::submit('Submit', ['class' => 'form-control']) !!}
        {!! Form::close() !!}
//controller method
public function showProject(Request $request)
    {
        $project=Project::find($request->get('project_id'));
        return view('admin.projects.showProject', compact('project'));
    }

它几乎工作,但没有什么问题。检索所请求的项目后,ULR如下所示:

admin/projects/%7Bproject_id%7D?project_id=5 

我希望它是这样的:

admin/projects/5

我该如何解决这个问题?

创建以下路由:

Route::get('admin/projects', 'AdminController@getProject');
Route::post('admin/projects', 'AdminController@postProject');
Route::get('admin/projects/{project_id}', 'AdminController@showProject');

在getProject函数中返回一个视图,该视图显示用户可以在其中输入ID的表单。(你已经有的):

{!! Form::open(['action' => 'AdminController@postProject', 'method' => 'post']) !!}
    {!! Form::label('project_id', 'Project Id', ['class' => 'control-label']) !!}
    {!! Form::text('project_id', null, ['class' => 'form-control']) !!}
    {!! Form::submit('Submit', ['class' => 'form-control']) !!}
{!! Form::close() !!}

在你的postProject函数中,你只需发送一个重定向到admin/project/{project_id} URL:

public function postProject(Request $request)
{
    return redirect('admin/projects/' . $request->project_id);
}

在showProject函数中,您只需检索记录并返回包含信息的视图:

public function showProject($ProjectID)
{
    $project=Project::find($ProjectID);
    return view('admin.projects.showProject'),
        ->with('Project', compact('project'));
}

尝试将控制器方法更改为

 public function showProject($project_id)
{
    $project=Project::find($project_id);
    return view('admin.projects.showProject', compact('project'));
}

你不需要在get路由中使用request