// Find which hour of the day has the most activity
$results = ApiUsageLog::query()
->selectRaw(DatabaseExpressions::extractHour('created_at') . ' as hour, COUNT(*) as hits')
->groupByRaw(DatabaseExpressions::extractHour('created_at'))
->orderByRaw(DatabaseExpressions::extractHour('created_at'))
->get();
use PhilipRehberger\DbExpressions\DatabaseExpressions;
// Difference in whole days (column1 - column2)
$expr = DatabaseExpressions::dateDiffDays('completed_at', 'created_at');
// Difference in hours (column1 - column2)
$expr = DatabaseExpressions::dateDiffHours('completed_at', 'created_at');
// Average project duration in days
$avg = Project::query()
->whereNotNull('completed_at')
->selectRaw('AVG(' . DatabaseExpressions::dateDiffDays('completed_at', 'created_at') . ') as avg_days')
->value('avg_days');
use PhilipRehberger\DbExpressions\DatabaseExpressions;
// Add 7 days to a date
$expr = DatabaseExpressions::addDays('created_at', 7);
// Subtract 30 days from a date
$expr = DatabaseExpressions::subtractDays('created_at', 30);
// Find records expiring within the next 7 days
$expiring = Subscription::query()
->whereRaw(DatabaseExpressions::addDays('created_at', 365) . ' < NOW()')
->get();
// Get records from the last 30 days using date arithmetic
$recent = Order::query()
->whereRaw('created_at >= ' . DatabaseExpressions::subtractDays('NOW()', 30))
->get();