获取where条件的列总数

时间:2018-09-06 07:34:52

标签: php laravel laravel-5

我正在尝试获取条件为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 :(得分:2)

Laravel's documentation中,您不需要在那里链接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

答案 1 :(得分:0)

您不需要那里的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]);
    }

答案 2 :(得分:0)

无需使用get()

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

将返回具有您的总和值的浮点数