在Laravel中显示来自数据库的单个记录

时间:2018-11-09 15:00:08

标签: php laravel

我的git rebase -i --root中有两种方法。第一个称为callsController,它显示数据库表中的所有记录,如下所示:

newCall

此功能运行良好,并且所有记录在我的视图中均已成功检索。

问题出在第二种方法public function newCall(){ $new_calls = new_calls::all(); //fetches everything in the new_calls table in the database return view('calls.newCall')->with('new_calls', $new_calls); //passes it to the view } 上,其目的是当从viewCall列表中单击名称时显示单个call的数据。

目前,我只有这个:

newCalls

我计划在显示在public function viewCall(){ return view('calls.viewCall'); } 中的同时使用一些静态文本来格式化数据库中的数据(用于特定调用)。

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

viewCall.blade.php

有人可以帮助我完成这项工作吗?当我单击呼叫名称时,我只想查看数据库中记录的关联数组。我需要在路线和视图中添加什么?

这是我的Route::get('/calls/newCall', 'CallsController@newCall'); Route::get('/calls/viewCall/{id}', 'CallsController@viewCall')->name('viewCall');

newCall.blade.php

这是我的<div class="table-responsive"> <table class="table no-margin table-striped"> <thead> <tr> <th>Terminal ID</th> <th>Terminal Name</th> {{-- <th>Fault Description</th> --}} <th>Call Logged On</th> <th>ATM Variant</th> </tr> </thead> <tbody> @if(count($new_calls) > 0) @foreach($new_calls as $calls) <tr> <td><a href="/calls/viewCall/{{$calls->id}}" title="view more details">{{$calls->terminal_id}}</a></td> <td>{{$calls->terminal_name}}</td> {{-- <td style="width:350px">{{$calls->fault_description}}</td> --}} <td>{{$calls->created_at}}</td> <td>{{$calls->atm_variant}}</td> </tr> @endforeach @else <h1>No new Calls</h1> @endif </tbody> </table> </div>

viewCall.blade.php

nb:我也尝试过使用<address> <strong>{{$new_call->client_name}}</strong><br> {{$new_call->address}}<br> <b>Phone: {{$new_call->phone}}</b> <br> <b>Email: {{$new_call->email}}</b> </address> ,但它返回的是未定义的变量:每种情况下的调用和new_calls

3 个答案:

答案 0 :(得分:1)

您可以执行以下操作:

public function viewCall($id)
{
    return view('calls.viewCall', ['call' => new_calls::findOrFail($id)]);
}

这将从路由中获取id,并调用函数以找到具有给定id的对象。

如果您在处理视图中的变量时遇到问题。尝试使用dd检查对象。试试这个:

public function viewCall($id)
{
    $new_call = new_calls::find($id);
    dd($new_call);
}

参考:https://laravel.com/docs/5.7/controllers#basic-controllers

答案 1 :(得分:0)

我也建议您在控制器上命名命名,路由模型绑定和类型提示。
然后,您将得到以下内容:

On

和路线如下:

    public function viewCall(NewCall $newcall)
{
    return view('calls.viewCall')->with($newcall);
}

答案 2 :(得分:0)

您需要做的是通过new_calls获得ID模型。您可以这样做:

routes / web.php

Route::get('/calls/viewCall/{id}', 'CallsController@viewCall');

CallsController.php

public function viewCall($id) // the id in the url
{
    $new_call = new_calls::find($id);

    return view('calls.viewCall')->with('new_call', $new_call);
}

在您看来(我假设您正在遍历所有调用以显示它们)创建一个链接。

// your existing foreach
@foreach($x as $y)
    <a href="/calls/viewCall/{{$y->id}}">View Call</a>
@endforeach