Хобрук: Ваш путь к мастерству в программировании

Laravel передает данные БД с контроллера в представление

Я не могу передать результат БД в представление. Если я отлаживаю его на стороне контроллера, все в порядке, поэтому запрос БД работает нормально, но когда я пытаюсь получить переменную в поле зрения, он говорит, что переменная не определена.

Контроллер:

$records = DB::table('records')
        ->join('call_charges', function($join)
        {
            $join->on('records.inbound_originating_address_region', '=', 'call_charges.RateDestination')
                ->on('records.inbound_originating_address_type', '=', 'call_charges.RateType');
        })
        ->join('phone_types', 'records.inbound_originating_address_type', '=', 'phone_types.phone_type_id')
        ->orderBy('records.inbound_initiated_utc', 'asc')
        ->get();
return View::make( 'records.index' )->with( 'records', $records );

Вид:

@extends('app')

@section('content')

    @if (Auth::check())

    <h2>Call records</h2>

        @if ( !$records->count() )
            No call records to view!
        @else
            <table class="table table-striped table-hover table-condensed table-bordered">
                <thead>
                <tr>
                    <th>Time</th>
                    <th>Out call</th>
                    <th>Duration</th>
                    <th>Cost</th>
                    <th>Billable</th>
                    <th>Country</th>
                    <th>Type</th>
                    <th>Caller</th>
                    <th>Receiver</th>
                </tr>
                </thead>
                <tbody>
                @foreach( $records as $record )
                    <tr>
                    <td>{{ $record->inbound_initiated_utc }}</td>
                    @if ( $record->is_in_call == 1 )
                    <td class="success">Yes</td>
                    @else
                    <td class="warning">No</td>
                    @endif
                    <td>{{ $record->inbound_duration }}</td>
                    <td>{{ $record->session_total_charges }}</td>
                    <td>0</td>
                    <td>{{ $record->inbound_originating_address_region }}</td>
                    <td>{{ $record->inbound_originating_address_type }}</td>
                    <td>{{ $record->inbound_originating_address }}</td>
                    <td>{{ $record->inbound_destination_address }}</td>
                    </tr>
                @endforeach
                </tbody>
            </table>
        @endif

    @endif

    @unless (Auth::check())
        You are not signed in. Please sign in <a href='/auth/login'>here</a>
    @endunless
@endsection

  • Это работает с ->with(["records" => $records]);? 23.10.2015
  • Только что попробовал, та же проблема :( 23.10.2015
  • Хмм хорошо. Можете ли вы вставить все сообщение об ошибке? Конкретная строка и т. д. А также запустите dd($records) прямо перед вашим оператором return и дайте мне знать, что там написано. 23.10.2015
  • FatalErrorException in 75d317ce14c300fc21f1325b6a642784 line 9: Call to a member function count() on array но если я удалю счетчик, он ничего не напечатает, так как переменной не существует 23.10.2015
  • Ах, есть проблема. Должно быть count($records), так как ->count() можно вызывать только для запроса Eloquent, а не для коллекции Eloquent. Кроме того, если он ничего не печатает, это не значит, что он не определен, это означает, что в вашем наборе результатов, скорее всего, ничего нет. Запустите dd($records) перед возвратом представления, чтобы увидеть, есть ли что-нибудь в $records 23.10.2015
  • @if ( count($records) ) No call records to view! @else Теперь этот оператор выполняется и печатает Нет записей вызовов для просмотра, но их много, если я var_dump переменной на стороне контроллера. 23.10.2015
  • @if(count($records) == 0 ) No call records to view. @else Проверьте свою логику ;) 23.10.2015
  • О, моя вина, извините. Большое спасибо! 23.10.2015

Ответы:


1

Изменил оператор return на

return view("records.index")->with(["records" => $records]);

Далее, использование ->count() может выполняться только в запросе Eloquent (до использования ->get() или ->first()), чтобы вернуть количество результатов. После одного из замыканий логику нужно изменить на:

@if(count($records) == 0)
No call records to be view!
@else
...
@endif
23.10.2015
Новые материалы

Создание кнопочного меню с использованием HTML, CSS и JavaScript
Вы будете создавать кнопочное меню, которое имеет состояние наведения, а также позволяет вам выбирать кнопку при нажатии на нее. Финальный проект можно увидеть в этом Codepen . Шаг 1..

Внедрите OAuth в свои веб-приложения для повышения безопасности
OAuth — это широко распространенный стандарт авторизации, который позволяет приложениям получать доступ к ресурсам от имени пользователя, не раскрывая его пароль. Это позволяет пользователям..

Классы в JavaScript
class является образцом java Script Object. Конструкция «class» позволяет определять классы на основе прототипов с чистым, красивым синтаксисом. // define class Human class Human {..

Как свинг-трейдеры могут использовать ИИ для больших выигрышей
По мере того как все больше и больше профессиональных трейдеров и активных розничных трейдеров узнают о возможностях, которые предоставляет искусственный интеллект и машинное обучение для улучшения..

Как построить любой стол
Я разработчик программного обеспечения. Я люблю делать вещи и всегда любил. Для меня программирование всегда было способом создавать вещи, используя только компьютер и мое воображение...

Обзор: Машинное обучение: классификация
Только что закончил третий курс курса 4 часть специализации по машинному обучению . Как и второй курс, он был посвящен низкоуровневой работе алгоритмов машинного обучения. Что касается..

Разработка расширений Qlik Sense с qExt
Использование современных инструментов веб-разработки для разработки крутых расширений Вы когда-нибудь хотели кнопку для установки переменной в приложении Qlik Sense? Когда-нибудь просили..