'Laravel groupBy date get total column

I want to report before the selected date and the entered day. Dates that are not before the selected date and the number of days are also coming. I don't want empty dates to appear and I want to show the total column data in the database for that date. Where am I doing wrong? I want to make a comparison between incoming values to change the table background-color

Database Structure

Table Structure

public function listByDaily(Request $request)
{

    $endDate = $request->date('date') ?? today();

    $startDate = $endDate
        ->copy()
        ->subDays($numberofdays);
    $dates = CarbonPeriod::create($startDate, $endDate);

    $transactions = Transactions::whereBetween('date', [$startDate, $endDate])
        ->select('product_id', 'supplier_id', 'total', 'date')
        ->latest('date')
        ->get();

    $productIds = $transactions
        ->pluck('product_id')
        ->unique()
        ->values()
        ->toArray();

    $supplierIds = $transactions
        ->pluck('supplier_id')
        ->unique()
        ->values()
        ->toArray();

    $productselect = Product::whereIn('id', $productIds)
        ->select('id', 'product_name')
        ->pluck('product_name', 'id');

    $suppliers = Supplier::whereIn('id', $supplierIds)
        ->select('id', 'supplier_name')
        ->get();

    $columns = collect($transactions)
        ->whereNotNull('date')
        ->groupBy('date','DESC')
        ->map(function($items) {
            return $items
                ->groupBy('product_id','total');
        })
        ->pluck('total');
        //dd($columns);
        /*->toArray();*/
    $products = Transactions::join('products', 'products.id', '=', 'transaction.product_id')->get()->unique();
    return view('transactions.reportbydates', compact('products', 'productIds', 'dates', 'suppliers', 'columns'));

}


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source