/ / Contador de vistas de página de Laravel 4.2 - laravel, laravel-4

Contador de vistas de página Laravel 4.2 - laravel, laravel-4

Así que agregué este contador de vistas de página a mi aplicación que cuenta cada visita en una página de artista. En este momento, si actualiza la página, el contador es +1 por cada actualización.

Mi pregunta es ¿cómo puedo contar las visitas únicas solo por día?

Mi controlador:

        if ( $artist ) {

$getartist   = $this->_artist->get($artist, "slug");

if ( $getartist ) {

$getsongs = $this->_song->collections($input, $getartist->id, "ASC");
$this->_artist->updateVisits($getartist->id);
$data = [
"is_artist"   => true,
"artist"      => $getartist,
"songs"       => $getsongs,
"randomsongs" => $this->randomsongs,
];
return $this->view("index", $data);

}

}

El código de contador es:

$this->_artist->updateVisits($getartist->id);

Luego, en mi ArtistRepository:

public function updateVisits($artist_id)
{
$artist = $this->model->where("id",$artist_id)->first();
$artist->visits = $artist->visits+1;
$artist->save();
}

Entonces, ¿cómo puedo evitar que el contador cuente si el usuario actualiza la página?

Respuestas

0 para la respuesta № 1

Ok, encontré una solución a esto con cookies Aquí está mi código.

public function updateVisits($artist_id)
{
$artist = $this->model->where("id",$artist_id)->first();

// Check if cookies exist
if(!isset($_COOKIE["visited_id" . $artist_id])) {
// If not set cookie and pass counter
setcookie("visited_id" . $artist_id, $artist_id, time()+30);  /* expire in seconds */
$artist->visits = $artist->visits+1;
$artist->save();

// If cookie exist on user computer
} else {
//do nothing
}
}

0 para la respuesta № 2

Primero agrega un date campo encendido DB table. Luego cambie su función a la siguiente-

public function updateVisits($artist_id)
{
$artist = $this->model->firstOrCreate(["id" => $artist_id,"your_date_field_name"=>date("Y-m-d")]);
$artist->visits = $artist->visits+1;
$artist->save();
}

Y no te olvides de añadir id, your_date_field_name en fillable matriz para ser mass asignable.