mardi 5 mai 2020

Laravel: Get Page views in the last 30 days

I need an output that list page views in the last 30 days.

This is my structure.

CREATE TABLE `view_history` (
  `page_id` int(11) NOT NULL,
  `date` date NOT NULL,
  `views` int(6) DEFAULT '0',
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`page_id`,`date`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Controller:

$pageViews = ViewHistory::where('page_id',1)
                ->select('date','views')
                ->orderBy('date','DESC')
                ->take(30)
                ->get();

Blade:

@foreach($pageViews as $pageView)
    date: 
    views: <br>
@endforeach

The output to the browser is:

date: 2020-05-02 views:10
date: 2020-04-30 views:7
date: 2020-04-26 views:2
date: 2020-04-23 views:12
date: 2020-04-22 views:12
date: 2020-04-21 views:12
date: 2020-04-16 views:6
date: 2020-04-14 views:11
date: 2020-04-12 views:11
date: 2020-04-11 views:1
date: 2020-04-09 views:7
date: 2020-04-07 views:12
date: 2020-04-06 views:6
date: 2020-04-05 views:10
date: 2020-04-04 views:3
date: 2020-04-03 views:6

When I dig into the database, I found that some date doesn't have any record in it at all. (Presume 0 views). How go I get all 0 views day to the output as well?

Thanks!



via Chebli Mohamed

Aucun commentaire:

Enregistrer un commentaire