Eloquent writes the SQL, and most days that is a good trade. These posts cover the places where the query it sends and the query you meant differ in a way MySQL cares about, such as a whereDate() that makes it read every row in the table, and what MySQL itself records about each table and index while the app runs.
To see which of those records your server keeps, the performance_schema checker takes the output of one read-only query and lists the consumers and instruments that are off.
whereDate('created_at', $day) sends date(created_at) = ?, and MySQL reads every row to answer it. EXPLAIN for that and the other Eloquent calls that hide an index, the Laravel rewrite for each, and why whereBetween() with startOfDay() and endOfDay() can match nothing.
performance_schema hands back one running total per counter, so an hour of full scans yesterday is invisible in it. Sailfish reads it every five minutes from your Laravel app and charts it: each index's reads, each table's scans, the server and finished transactions.