在laravel中从数据库中检索和显示单个记录

inc*_*ick 5 php laravel laravel-5

我的控制器中有两种方法.第一个被调用uploads,它显示数据库表中的所有记录,它看起来像这样:

 public function uploads()
    {
        //return Upload::all();
        $uploads = Upload::all();
        return view('uploads')->with('uploads',$uploads);
    }
Run Code Online (Sandbox Code Playgroud)

此功能正常运行,并且在我的视图中成功检索了所有记录.

问题在于第二种方法upload,其目的是在从上载列表中单击其名称时显示单个上载的数据.

目前,我有这个:

 public function upload($id)
{
    return Upload::find($id);
}
Run Code Online (Sandbox Code Playgroud)

而且我不确定如何完成此功能.

我的观点看起来像这样:

 @extends('layouts.app')
@section('content')
    <h1>Uploads</h1>
    @if(count($uploads)>0)
@foreach($uploads as $upload)
    <div class="well">
        <h3><a href="/uploads/{{$upload->id}}">{{$upload->name}}</a> </h3>
        <small>Written on {{$upload->created_at}}</small>
    </div>
        @endforeach
    @else
    <p>No uploads found</p>
    @endif

@endsection
Run Code Online (Sandbox Code Playgroud)

我不太确定要放什么web.php,所以我的路线看起来像这样:

    Route::get('/uploads', function () {
    return view('uploads');
});

Auth::routes();
Route::get('/uploads','UploadController@uploads')->name('uploads');
Run Code Online (Sandbox Code Playgroud)

有人可以帮助我做这项工作吗?我只想在单击上传名称时看到关联数组与数据库中的记录.在路线和视图中我需要添加什么?

com*_*nse 3

// Controller
public function uploads()
{
    $uploads = Upload::all();
    return view('uploads')->with('uploads', $uploads);
}
Run Code Online (Sandbox Code Playgroud)

您可以在此处使用 Laravel IOC 容器,并让 Laravel 在控制器操作中传递正确的 Upload。

public function showUploadDetail(Upload $upload)
{
    return view('uploadDetail')->with('upload', $upload);
}
Run Code Online (Sandbox Code Playgroud)

创建一个新的刀片文件,uploadDetail.blade.php并使用示例内容调用:

@extends('layouts.app')

@section('content')
   <h1>Upload Detail</h1>
   <p>ID: {{ $upload->id }}</p>
@endsection
Run Code Online (Sandbox Code Playgroud)

正如fil已经提到的,将您的路线调整为:

Route::get('/upload/{id}', 'UploadController@upload')->name('upload');
Run Code Online (Sandbox Code Playgroud)