2013-06-24 4 views
6
//Earlier in the code, in each Model: 
query = ModelName::select('table_name.*') 

//Later in the code in a function in a Trait class that is always called 

    if ($column == 'group_by') 
    { 
     $thing_query->groupBy($value); 
     $thing_query->select(DB::raw('COUNT('.$value.') as count')); 
    } 

क्या वांछित क्वेरी बिल्डर में एक अलग चयन फ़ंक्शन को जोड़ने या शामिल करने का कोई तरीका है?लार्वा फ़्लुएंट अलग-अलग स्थानों में चयन() एस जोड़ें?

वास्तविक -> चयन() पहले सेट किया गया है और फिर यह फ़ंक्शन कहा जाता है। मैं इस बाद के फ़ंक्शन में गिनती कॉलम को सशर्त रूप से जोड़ना चाहता हूं जिसमें क्वेरी पास हो गई है।

उत्तर

-1

इस प्रयास करें: इसके अलावा

$thing_query->groupBy($value)->get(DB::raw('COUNT('.$value.') as count'));

, अगर आप सिर्फ गिनती पाने और नहीं कई चीजें आप ->get()

+0

वह मेरी अन्य चुनिंदा प्रश्नों के गिनती नहीं जोड़ता है, बस अपने आप में यह रिटर्न – Damon

0

के बजाय ->count() उपयोग कर सकते हैं का चयन हाँ आप बस ब्लॉक सम्मिलित करने के लिए कोशिश कर रहे हैं आप एक समारोह के रूप में निष्पादित करना चाहते हैं .... Parameter Grouping पर प्रलेखन के अनुसार, आप ऐसा कर सकते हैं ... कहां से एक समारोह ...

प्रो के नीचे यह कोड जो आप चाहते हैं वह नहीं कर सकते हैं, लेकिन, इसके लिए आपके लिए कुछ बनाना है, और इसके साथ खेलना है।

DB::table('users') 
     ->where('name', '=', 'John') 
     ->orWhere(function($query) 
     { 
      $query->group_by($value); 
        ->select(DB::raw('COUNT('.$value.') as count')); 
     }) 
     ->get(); 
12

भविष्य में संदर्भ के लिए, यदि आप addSelect() फ़ंक्शन का उपयोग कर सकते हैं।

यह दस्तावेज में है करने के लिए अच्छा होगा, लेकिन आप API में यहां यह जानकारी मिलेगी: http://laravel.com/api/4.2/Illuminate/Database/Query/Builder.html#method_addSelect

+0

वह लिंक मेरे लिए काम नहीं करता है, यह करता है: http://laravel.com/api/4.2/Illuminate/Database/Query/Builder.html#method_add चयन करें – Benubird

+0

धन्यवाद, अपडेट किया गया है – Cameron

संबंधित मुद्दे