2016-06-22 3 views
1

Mein CodeLaravel 5.1: Query Builder Wählen Sie Multi-Tabelle und SUM Ergebnis

DB::table('users_tb')->leftjoin('device_tb', 'device_tb.user_id', '=', 'users_tb.user_id') 
->leftjoin('part_tb', 'device_tb.device_id', '=', 'part_tb.device_id') 
->select('users_tb.user_name', DB::raw("(SELECT COUNT(part_tb.id) FROM part_tb) AS counter")) 
->where('users_tb.level', '>', 7) 
->havingRaw("(SELECT COUNT(part_tb.id) FROM part_tb) > 0") 
->groupBy('device_tb.device_id') 
->orderBy('users_tb.user_name') 
->get()->toArray(); 

Mein Ergebnis:

Name1 - 3 
Name1 - 4 
Name1 - 3 
Name2 - 11 
Name2 - 2 

Wie i-Zähler SUM kann? (mit Abfrage-Generator/SQL-Abfrage) Beispiel:

Name1 - 10 (3+4+3) 
Name2 - 13 (11 + 2) 

Jemand helfen Sie mir bitte !!

Antwort

0

Ich habe ein benutzerdefiniertes Array erstellt, ich denke, Ihr Abfragearray ist gleich. Sie können Ihren Code fließend schreiben.

$arrs['Name1'] = array(
    3,4,3 
); 
$arrs['Name2'] = array(
    11,2 
); 

$count_status = array(); 
foreach($arrs as $index=>$arr){ 
    $sum = 0; 
    foreach($arr as $key=>$arrss){  
     isset($arrs[$index]) ? $count_status[$index] = $sum+=$arrss : $sum = 0; 
    } 
    $allVal[$index] = implode('+',$arr); 
} 
foreach($count_status as $stKey=>$eachCount){ 
    echo $stKey.' - '.$eachCount.' ('.$allVal[$stKey].') <br>'; 
} 

Ausgang für mich

//Name1 - 10 (3+4+3) 
//Name2 - 13 (11+2) 
+0

Thank you so viel, ist diese großartige Idee. Aber, Sie können SUM Ergebnis mit Query Builder –