groupBy('vehicles.id') ->selectRaw('*, sum(vehicle_scores.overall_score) as totalscore') ->whereNotIn('vehicle_scores.vehicle', function($query){ $query->select('vehicle')->from('car_show_winners'); }) ->where('vehicles.doNotJudge', '=', 0) ->orderBy('totalscore','desc') ->first(); return $bestInShowWinnerQuery->vehicle; } function pcWinner() { $peoplesChoiceWinnerQuery = DB::table('peoples_choice') ->groupBy('peoples_choice.vehicle') ->selectRaw('*, sum(pc_count as totalscore') ->whereNotIn('vehicle', function($query){ $query->select('vehicle')->from('car_show_winners'); }) ->where('vehicles.doNotJudge', '=', 0) ->orderBy('totalscore','desc') ->first(); return $peoplesChoiceWinnerQuery->vehicle; } function zeroTo43Winner() { $zeroTo43Query = VehicleScores::join('vehicles', 'vehicle_scores.vehicle', '=', 'vehicles.id') ->groupBy('vehicles.id') ->selectRaw('*, sum(vehicle_scores.overall_score) as totalscore') ->whereNotIn('vehicle_scores.vehicle', function($query){ $query->select('vehicle')->from('car_show_winners'); }) ->where('vehicles.year', '>=', 0) ->where('vehicles.year', '<=', 1943) ->where('vehicles.doNotJudge', '=', 0) ->orderBy('totalscore','desc') ->first(); return $zeroTo43Query->vehicle; } function fortyFourToCurrentWinner() { $fortyFourToCurrentQuery = VehicleScores::join('vehicles', 'vehicle_scores.vehicle', '=', 'vehicles.id') ->groupBy('vehicles.id') ->selectRaw('*, sum(vehicle_scores.overall_score) as totalscore') ->whereNotIn('vehicle_scores.vehicle', function($query){ $query->select('vehicle')->from('car_show_winners'); }) ->where('vehicles.year', '>=', 1944) //->where('vehicles.year', '<=', 1959) ->where('vehicles.doNotJudge', '=', 0) ->orderBy('totalscore','desc') ->first(); return $fortyFourToCurrentQuery->vehicle; } //categories /* Here for reference only $individuallyProcessedAwards = array( 'inShowFirst' =>'6', 'pcFirst' => '3' ); */ $mainAwardsToCalculate = array( 'inShowFirst' =>'6', 'inShowSecond' =>'6', 'pcFirst' => '3', 'pcSecond' => '3' ); $yearAwardsToCalculate = array( 'zeroTo43First' => '17', 'zeroTo43Second' => '17', 'fourtyFourToCurrentFirst' => '18', 'fourtyFourToCurrentSecond' => '18' ); //Insert Best In Show Winner CarShowWinner::updateOrCreate( [ 'category' => '6', 'place' => 'first' ], [ 'vehicle' => bestInShowWinner() ] ); //Insert Best In Show 2nd Place Winner CarShowWinner::updateOrCreate( [ 'category' => '6', 'place' => 'second' ], [ 'vehicle' => bestInShowWinner() ] ); //Insert People's Choice Winner CarShowWinner::updateOrCreate( [ 'category' => '3', 'place' => 'first' ], [ 'vehicle' => pcWinner() ] ); CarShowWinner::updateOrCreate( [ 'category' => '3', 'place' => 'second' ], [ 'vehicle' => pcWinner() ] ); //Insert Year Award Winners //0-1943 CarShowWinner::updateOrCreate( [ 'category' => '17', 'place' => 'first' ], [ 'vehicle' => zeroTo43Winner() ] ); CarShowWinner::updateOrCreate( [ 'category' => '17', 'place' => 'second' ], [ 'vehicle' => zeroTo43Winner() ] ); //1944-Current CarShowWinner::updateOrCreate( [ 'category' => '18', 'place' => 'first' ], [ 'vehicle' => fortyFourToCurrentWinner() ] ); CarShowWinner::updateOrCreate( [ 'category' => '18', 'place' => 'second' ], [ 'vehicle' => fortyFourToCurrentWinner() ] ); } }