2017-07-22 6 views
1

Meine Tabellendefinition ist als untenVerwendung OR in Laravel Query Builder

**PURCHASE_PYAMENTS** 

SELLER  MASTER_PAYMENT  BILL  COUNT_VB  PAYMENT_STATUS  REMAIN_PARTIAL_AMOUNT 

abc   15000    0   0    1     0 
xyz   14000    1   1    1     14000 
abc   15000    0   0    0     5000 

Ich brauche sum von master_payment Spalte für bestimmte seller unter zwei Bedingung:

  1. payment_status = 1 und count_vb = 0
  2. payment_status = 0 und remain_partial_amount > 0

Wenn eine der obigen Bedingungen zutrifft, dann sollte master_payment in sum hinzufügen, also, wie kann ich es mit einer einzigen Abfrage erreichen ?.

ich versuche, es von mir selbst, sondern ein Ergebnis für nur eine Bedingung meiner Anfrage ist als unten:

$total_count_vb = DB::table('purchase_payments') 
     ->where('seller',$seller_list) 
     ->where('count_vb',0) 
     ->where('payment_status',1) 
     ->SUM('master_payment'); 

Antwort

0

Verwenden where() und orWhere() Verschlüsse für parameter grouping:

Payment::where('seller', 'abc')-> 
     ->where(function ($q) { 
      $q->where(function ($q) { 
       $q->where('payment_status', 1)->where('count_vb', 0); 
      }) 
      ->orWhere(function ($q) { 
       $q->where('payment_status', 0)->where('remain_partial_amount', '>', 0); 
      }); 
     }); 
     ->sum('master_payment');