मेरे पास खरीद नामक एक मॉडल है जिसका उत्पाद मॉडल के साथ कई-से-अनेक संबंध हैं। मैंने खरीदे गए उत्पाद नामक कई-से-अनेक संबंधों में तालिका को प्रबंधित करने के लिए एक मॉडल बनाया है। यह मॉडल करेंसी नामक एक अन्य मॉडल से संबंधित है।

खरीदारी तालिका: आईडी, संख्या, create_at, update_at.
Product_table: आईडी, विवरण, create_at, update_at.
मुद्रा तालिका: आईडी, कोड, नाम, अनुपात।
उत्पाद_खरीद तालिका: आईडी, खरीद_आईडी, उत्पाद_आईडी, मुद्रा_आईडी, मात्रा, मूल्य।

एक User कई Products खरीद सकता है, तो वह कई Currencies में भुगतान कर सकता है। प्रत्येक लेन-देन का प्रबंधन करने के लिए, मैं मुद्रा द्वारा कुल (मात्रा * मूल्य) का योग करना चाहता हूं। मैंने इसे एक एक्सेसर के साथ करने की कोशिश की है, लेकिन मैं केवल मुद्रा पर विचार किए बिना मात्रा * मूल्य के उत्पाद का योग कर सकता हूं।

public function getTotalAttribute($value)
{
    $transformers = $this->transformers();
    return $transformers->sum(\DB::raw('quantity * price'));
}`
0
Golinmarq 14 अक्टूबर 2018, 16:38

1 उत्तर

सबसे बढ़िया उत्तर

आप groupBy का उपयोग कर सकते हैं

public function getTotalAttribute($value)
{
    $transformers = $this->transformers();
    return $transformers->groupBy('currency_id')
    ->selectRaw('sum(quantity * price) as sum, currency_id')
    ->get();
}
1
hossamGamal 14 अक्टूबर 2018, 16:20