Home >Database >Mysql Tutorial >How Can I Group Laravel Eloquent Results by Days?

How Can I Group Laravel Eloquent Results by Days?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-03 15:09:03696browse

How Can I Group Laravel Eloquent Results by Days?

Grouping Laravel Eloquent Results by Days

When working with a table containing records that track user activity, grouping by days can be useful for obtaining insights into traffic patterns. However, the presence of different times for each record can hinder accurate grouping.

Solution 1: DB::Raw Query

To achieve day-based grouping, utilize the DATE() function in MySQL. This function strips away time components from timestamps, resulting in pure dates.

DB::table('page_views')
    ->select(DB::raw('DATE(created_at) as date'), DB::raw('count(*) as views'))
    ->groupBy('date')
    ->get();

Solution 2: Eloquent Query with Carbon

To remain within the Laravel Eloquent framework, leverage Carbon for date manipulation. The first where clause filters records created within the last month. Grouping by date and ordering by it in descending order ensures chronological presentation.

<code class="php">$visitorTraffic = PageView::where('created_at', '>=', \Carbon\Carbon::now()->subMonth())
                            ->groupBy('date')
                            ->orderBy('date', 'DESC')
                            ->get(array(
                                DB::raw('Date(created_at) as date'),
                                DB::raw('COUNT(*) as "views"')
                            ));</code>

The above is the detailed content of How Can I Group Laravel Eloquent Results by Days?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn