2015-05-14 48 views
0

我想比較兩個選擇查詢裏面的條件在Laravel5查詢條件,laravel5中的where條件中的兩個子選擇查詢?

我在laravel中查詢的where條件如下,但它不是wokring。

即,select from invoice where (select query1) == (select query2)

$invoice->orWhere(function($query) { 
       $query->where('invoices.status', '=', InvoiceStatusConstant::SENT) 
         ->where('invoices.due_date', '<', Carbon::today()->toDateString()) 
         ->where(DB::raw('(SELECT ROUND(SUM(invoice_items.quantity*invoice_items.rate), 2) from invoice_items'), '=', 
           DB::raw("(SELECT SUM(payments.amount) from payments ")); 
      }); 

我該如何解決這個問題?

+1

你不能比較需要比較值的查詢.. –

+0

比較查詢意味着在比較值,每個查詢選擇一個值:) – gsk

回答

0

DB :: raw不會給你一個值。這只是創建表達式的一種方式。如果你想這樣做,你應該使用:

DB::select(DB::raw("(SELECT SUM(payments.amount) from payments")) 

但這會給你一個數組。所以,我會做到以下幾點:

DB::select(DB::raw("(SELECT SUM(payments.amount) as pay from payments"))[0]->pay 

或更容易

DB::select("(SELECT SUM(payments.amount) as pay from payments")[0]->pay 
相關問題