Отображение одной записи из базы данных в laravel - PullRequest
0 голосов
/ 09 ноября 2018

У меня есть два метода в моем 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');
}

Я планирую отформатировать данные из базы данных (для определенного вызова) со статическим текстом, отображая его в моем viewCall.blade.php.

Я не был уверен, что поместить в web.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

<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>

nb: Я также пытался использовать {{$calls->email}}, но он возвращает неопределенную переменную: звонки и new_calls в каждом случае

Ответы [ 3 ]

0 голосов
/ 09 ноября 2018

Я также рекомендую посмотреть на соглашения об именовании, привязку модели маршрута и подсказку типа в контроллере.
Тогда у вас будет что-то вроде этого:

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

и маршрут будет выглядеть так:

Route::get('/calls/viewCall/{newcall}', 'CallsController@viewCall')->name('viewCall');
0 голосов
/ 10 ноября 2018

Что вам нужно сделать, это получить модель new_calls на ID. Что вы можете сделать так:

маршруты / 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
0 голосов
/ 09 ноября 2018

Вы можете сделать что-то вроде этого:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...