获取具有条件的列的总和

问题描述 投票:0回答:3

我试图获得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

php laravel laravel-5
3个回答
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

0
投票

你不需要那里的get()方法。

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

此外,您有两个返回语句一个接一个,使第二个返回语句无法访问。

view()方法的第二个参数需要是一个数组,或者您可以使用with()语法。您应该尝试以下代码,并将$ getTotalDue传递给视图。

public function create()
    {
         $getTotalDue = DB::table('ordered_books')                                
                            ->where('BillPaid', 0)
                            ->sum('Price');
        return view('pages.booksin')->with(['getTotalDue' => $getTotalDue]);
    }

0
投票

无需使用get()

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

将返回带有和值的浮点数

© www.soinside.com 2019 - 2024. All rights reserved.