2017-07-22 2 views
1

Ma définition de la table est comme ci-dessousutilisation ou dans le constructeur de requête Laravel

**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 

J'ai besoin sum de master_payment colonne pour seller spécifique sous deux conditions:

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

Si l'une des conditions ci-dessus devient vraie alors master_payment devrait ajouter sum alors, comment puis-je l'obtenir en utilisant une seule requête ?.

-je l'essayer par moi-même, mais obtenir un résultat pour une seule condition ma requête est comme ci-dessous:

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

Répondre

0

Utilisez where() et orWhere() fermetures pour 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');