Php 在laravel中从数据库检索和显示单个记录
我的控制器中有两种方法。第一个名为Php 在laravel中从数据库检索和显示单个记录,php,laravel,laravel-5,Php,Laravel,Laravel 5,我的控制器中有两种方法。第一个名为uploads,它显示DB表中的所有记录,如下所示: public function uploads() { //return Upload::all(); $uploads = Upload::all(); return view('uploads')->with('uploads',$uploads); } Route::get('/uploads', function ()
uploads
,它显示DB表中的所有记录,如下所示:
public function uploads()
{
//return Upload::all();
$uploads = Upload::all();
return view('uploads')->with('uploads',$uploads);
}
Route::get('/uploads', function () {
return view('uploads');
});
Auth::routes();
Route::get('/uploads','UploadController@uploads')->name('uploads');
此功能正在运行,并且在我的视图中成功检索到所有记录
问题在于第二种方法upload
,其目的是在上载列表中单击单个上载的名称时显示该上载的数据
目前,我只有以下几点:
public function upload($id)
{
return Upload::find($id);
}
我不知道如何完成这个功能
我的观点是这样的:
@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
有人能帮我做这件事吗?我只想在单击上载的名称时看到与数据库中的记录关联的数组。在我看来,我需要在路由中添加哪些内容?好的,试试这样的方法
public function upload($id)
{
$uploads = Upload::find($id);
return view('uploads')
->with('uploads', $uploads);
}
在你的刀刃上
@extends('layouts.app')
@section('content')
<h1>Uploads</h1>
@if(is_array($uploads) and count($uploads) > 0)
@foreach($uploads as $upload)
<div class="well">
<h3><a href="/upload/{{$upload->id}}">{{$upload->name}}</a> </h3>
<small>Written on {{$upload->created_at}}</small>
</div>
@endforeach
@else
<div class="well">
<h3><a href="/uploads/{{$uploads->id}}">{{$uploads->name}}</a> </h3>
<small>Written on {{$uploads->created_at}}</small>
</div>
@endif
@endsection
或者,您可以创建一个单独的刀片,对于单个视图,假设刀片的名称为upload.blade.php而不是uploads.blade.php,以便更清楚地了解文件名和用途
// Controller
public function uploads()
{
$uploads = Upload::all();
return view('uploads')->with('uploads', $uploads);
}
您可以在此处使用Laravels IOC容器,并让Laravel在控制器操作中传递正确的上载
public function showUploadDetail(Upload $upload)
{
return view('uploadDetail')->with('upload', $upload);
}
创建一个名为uploadDetail.blade.php
的新刀片文件,其中包含以下示例内容:
@extends('layouts.app')
@section('content')
<h1>Upload Detail</h1>
<p>ID: {{ $upload->id }}</p>
@endsection
您没有指定在web.php中显示单个记录的路径 Web.php 因此,只需将以下路径添加到web.php
Route::get('/uploads/{upload_id}','UploadController@upload')->name('single.upload');
使用UploadController中的以下功能更改上载功能:
此函数用于检索上载记录并将该记录返回到视图:
控制器
并创建名为view\u upload.blade.php的刀片文件,以显示单个选定的上载。
@extends('layouts.app')
@section('content')
<h1>Upload Detail</h1>
<p>ID: {{ $upload->id }}</p>
//Following Line Display all the Record.
// var_dump($upload);
@endsection
@extends('layouts.app'))
@节(“内容”)
上传详细信息
ID:{{$upload->ID}
//下一行显示所有记录。
//var_dump($upload);
@端部
那么目标是什么?只在upload()方法上显示一个?是的,在相同的文件名upload.blade.php上显示相应的idOn?我在上面写过:upload函数的目的是在uploads函数显示的上载列表中单击单个上载的名称时显示其数据。谢谢回答。我尝试了它,但它给了我这个错误:(2/2)ErrorException试图获取非对象的属性(视图:C:\xampp\htdocs\logoss\resources\views\uploads.blade.php),您可以使用类似{dump($uploads)}的东西来查看实际传递的内容
Route::get('/uploads/{upload_id}','UploadController@upload')->name('single.upload');
public function upload($upload_id)
{
$upload= Upload::find($upload_id);
//var_dump($upload); //Un-comment this line to show full Returned Data
return view('view_upload',compact('upload'));
}
@extends('layouts.app')
@section('content')
<h1>Upload Detail</h1>
<p>ID: {{ $upload->id }}</p>
//Following Line Display all the Record.
// var_dump($upload);
@endsection