Получить сумму столбца с условием где - PullRequest
0 голосов
/ 06 сентября 2018

Я пытаюсь получить сумму столбца Price с условием BillPaid значение столбца должно быть 0.

Мой кодовый блок

public function countDue()
{
    $getTotalDue = DB::table('ordered_books')                                
                            ->where('BillPaid', 0)
                            ->sum('Price')
                            ->get(); 
    return response()->json($getTotalDue);
    return compact('getTotalDue');
}

блок кода контроллера для вызова метода countDue.

public function create()
    {
        return view('pages.booksin', $this->countDue());
    }

просмотр страницы

<table id="showBooksIn" class="table table-bordered gridview">
    <thead>
        <tr><th>Total Due Amount</th></tr>
    </thead> 
    <tbody>
        @if(isset($getTotalDue))
            @foreach($getTotalDue as $data)
                <tr>
                    <td> {{$data}} </td>
                </tr>
            @endforeach
        @endif
  </tbody>          
</table>

но я получаю сообщение об ошибке:

Symfony \ Component \ Debug \ Exception \ FatalThrowableError (E_ERROR)
Call to a member function get() on float

Моя структура таблицы:

enter image description here

Ответы [ 3 ]

0 голосов
/ 06 сентября 2018

Из документации Laravel , вам не нужно связывать там метод get().

public function countDue(){
    $getTotalDue = DB::table('ordered_books')->where('BillPaid', 0)->sum('Price');    //Get the sum using the Laravel's query builder aggregate sum method

    return $getTotalDue;
}

public function create()
{
    return view('pages.booksin', ['getTotalDue' => $this->countDue()]);   //Pass the `countDue()` method output to the view
}

Примечание

Это одно значение, вы можете отобразить его внутри элемента заголовка или абзаца, например:

@if(isset($getTotalDue))
    <h2>{{ $getTotalDue }}</h2>
@endif
0 голосов
/ 06 сентября 2018

Нет необходимости использовать get ()

$getTotalDue = DB::table('ordered_books')                                
                            ->where('BillPaid', 0)
                            ->sum('Price');

вернет число с вашим значением

0 голосов
/ 06 сентября 2018

Вам не нужен метод get ().

    public function countDue()
{
    $getTotalDue = DB::table('ordered_books')                                
                            ->where('BillPaid', 0)
                            ->sum('Price'); 
    return response()->json($getTotalDue);
    return compact('getTotalDue');
}

Кроме того, у вас есть два оператора return сразу за другим, что делает второй оператор недоступным.

Второй аргумент метода view () должен быть массивом, или вы можете использовать синтаксис with (). Вы должны попробовать следующий код и передать $ getTotalDue в представление.

public function create()
    {
         $getTotalDue = DB::table('ordered_books')                                
                            ->where('BillPaid', 0)
                            ->sum('Price');
        return view('pages.booksin')->with(['getTotalDue' => $getTotalDue]);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...