Level 56
// add this to top of the file
use Illuminate\Support\Facades\DB;
$locationIds = DB::table('business_locations')->distinct()->pluck('location_id');
$builder = DB::table('business_locations')
->leftJoin('product_locations', 'business_locations.id', '=', 'product_locations.location_id')
->join('products', 'product_locations.product_id', '=', 'products.id')
->leftJoin('categories as c1', 'products.category_id', '=', 'c1.id')
->leftJoin('categories as c2', 'products.sub_category_id', '=', 'c2.id')
->leftJoin('variations', 'products.id', '=', 'variations.product_id')
->leftJoin('variation_location_details', 'variations.id', '=', 'variation_location_details.variation_id')
->select('products.name')
->groupBy('products.id');
foreach ($locationIds as $locationId) {
$builder->selectRaw(
"SUM(CASE WHEN business_locations.location_id = ? THEN variation_location_details.qty_available ELSE 0 END) AS `{$locationId}`",
[$locationId],
);
}
$records = $builder->get();