Another way to get the exact record of today's transactions is by using the like operator in conjunction with Carbon for example in Laravel 9+:
<?php
$date = Carbon::now();
$todaySales = Sales::query()
->where("created_at", "like", "%{$date->today()->toDateString()}%")
->get();
dd($todaySales);
The above will return an array of records for today.
Now why do we use this approach? I want you to take a good look at the created_at column field this is how it looks like: 2023-04-14 11:33:23. With this using where statement the result will be an empty array why? Because where statement uses an = operator by default which means the sql statement will attempt to match the records exactly the way it is. Here is how the query will look like:
SELECT * FROM sales WHERE created_at={$todaysDate}
// in this case todays date is 2023-04-14
// but the value in the database is rather containing time
// e.g.: 023-04-14 11:33:23 so definitely the select operation will fail and return empty results.
Looking at the above query there's no way the sql query is going to evaluate to any result but with the like operator the sql query will attempt to search for records that has todays date in them: 2023-04-14 which will return all records for today. If you're looking to retrieve records from a range let's say from Monday through to Friday you can use Laravel whereBetween() method otherwise try this approach. Hope this help you solve the problem.
You can also checkout this article for more info
PrescriptionTbl::where('created_at', date('Y-m-d H:i:s'))->get();?H:i:sPrescriptionTbl::whereDate('created_at', date('Y-m-d'))->get();It works for me.