2012-11-04 34 views
40

धाराप्रवाह क्वेरी निर्माता का उपयोग करके मेरी क्वेरी यहां दी गई है।लैरवेल के धाराप्रवाह क्वेरी निर्माता के साथ गिनती का चयन कैसे करें?

$query = DB::table('category_issue') 
     ->select('issues.*') 
     ->where('category_id', '=', 1) 
     ->join('issues', 'category_issue.issue_id', '=', 'issues.id') 
     ->left_join('issue_subscriptions', 'issues.id', '=', 'issue_subscriptions.issue_id') 
     ->group_by('issues.id') 
     ->order_by(DB::raw('COUNT(issue_subscriptions.issue_id)'), 'desc') 
     ->get(); 

जैसा कि आप देख सकते हैं, मैं शामिल तालिका से गिनती का आदेश दे रहा हूं। यह ठीक काम कर रहा है। हालांकि, मैं चाहता हूं कि यह गिनती मेरे चयनों के साथ लौट आए।

यहां मेरी कच्ची अनुक्रम क्वेरी है जो ठीक काम करती है।

Select issues.*, COUNT(issue_subscriptions.issue_id) AS followers 
FROM category_issue JOIN Issues ON category_issue.issue_id = issues.id 
LEFT JOIN issue_subscriptions ON issues.id = issue_subscriptions.issue_id 
WHERE category_issue.category_id = 1 
GROUP BY issues.id 
ORDER BY followers DESC 

लैरवेल के धाराप्रवाह क्वेरी निर्माता का उपयोग करके मैं इस चयन के बारे में कैसे जाऊं? मुझे पता है कि मैं एक कच्ची एसक्यूएल क्वेरी का उपयोग कर सकता हूं लेकिन यदि संभव हो तो मैं इससे बचना चाहूंगा। किसी भी मदद की सराहना की जाएगी, अग्रिम धन्यवाद!

उत्तर

72

आप अधिक कॉलम को परिभाषित करने के लिए चयन() में एक सरणी का उपयोग कर सकते हैं और आप डीबी :: कच्चे() को अनुयायियों को अलियासिंग के साथ उपयोग कर सकते हैं। इस तरह दिखना चाहिए:

$query = DB::table('category_issue') 
    ->select(array('issues.*', DB::raw('COUNT(issue_subscriptions.issue_id) as followers'))) 
    ->where('category_id', '=', 1) 
    ->join('issues', 'category_issue.issue_id', '=', 'issues.id') 
    ->left_join('issue_subscriptions', 'issues.id', '=', 'issue_subscriptions.issue_id') 
    ->group_by('issues.id') 
    ->order_by('followers', 'desc') 
    ->get(); 
23
$count = DB::table('category_issue')->count(); 

आपको आइटमों की संख्या देगा।

अधिक विस्तृत जानकारी के लिए फ्लुएंट क्वेरी बिल्डरbeautiful Laravel Documentation में अनुभाग देखें।

+0

आह हाँ, मुझे इसके बारे में पता था। सिवाय इसके कि, मैं इसे पोस्ट किए गए कच्चे अनुक्रम के समान एक प्रश्न में ऐसा करने की उम्मीद कर रहा था। इस दृष्टिकोण के लिए मुझे अपने डेटा के माध्यम से लूप करना होगा और प्रत्येक पंक्ति के लिए इसे गिनना होगा (प्रत्येक पंक्ति की गणना अलग-अलग हो सकती है)। कोई अन्य विचार? सहायता के लिए धन्यवाद! –

+0

लिंक अब काम नहीं करता है :( – Damon

+1

धन्यवाद @ डैमन मैंने लिंक अपडेट किया है। –