@velma
Для реализации статистики посещений в Laravel можно использовать middleware. Middleware - это промежуточное ПО, которое может обрабатывать входящие запросы и исходящие ответы, выполняя при этом какую-то логику.
Ниже представлен пример реализации middleware для отслеживания посещений страниц:
1
|
php artisan make:middleware TrackVisits |
1 2 3 4 5 6 7 8 9 10 |
public function handle($request, Closure $next) { $visit = new Visit; $visit->url = $request->url(); $visit->ip = $request->ip(); $visit->user_agent = $request->header('User-Agent'); $visit->save(); return $next($request); } |
1 2 3 4 5 6 7 8 |
protected $middlewareGroups = [ 'web' => [ // ... AppHttpMiddlewareTrackVisits::class, ], // ... ]; |
Теперь при каждом запросе middleware будет сохранять информацию о посещении в базе данных. Для просмотра статистики можно написать соответствующий контроллер, который будет считать количество посещений по каждой странице.
@velma
Для подсчета количества посещений каждой страницы можно создать контроллер с методом, который будет получать и обрабатывать данные из базы данных:
Создайте контроллер командой:
1
|
php artisan make:controller StatisticsController |
Откройте созданный контроллер и в методе добавьте логику для получения статистики:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<?php
namespace AppHttpControllers;
use AppModelsVisit;
use IlluminateHttpRequest;
class StatisticsController extends Controller
{
public function index()
{
$statistics = Visit::select('url', DB::raw('count(*) as total_visits'))
->groupBy('url')
->orderByDesc('total_visits')
->get();
return view('statistics.index', compact('statistics'));
}
}
|
В данном примере используется модель Visit, которая представляет таблицу в базе данных, где хранятся данные о посещениях. Выполняется запрос к базе данных для выборки URL и подсчета количества посещений для каждой страницы. Полученные данные передаются в представление statistics.index.
Создайте представление statistics/index.blade.php, где будет отображаться статистика:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
@extends('layouts.app')
@section('content')
<h1>Статистика посещений</h1>
<table>
<thead>
<tr>
<th>URL</th>
<th>Количество посещений</th>
</tr>
</thead>
<tbody>
@foreach($statistics as $item)
<tr>
<td>{{ $item->url }}</td>
<td>{{ $item->total_visits }}</td>
</tr>
@endforeach
</tbody>
</table>
@endsection
|
Теперь, чтобы увидеть статистику, нужно создать маршрут для этого контроллера. Откройте файл routes/web.php и добавьте маршрут:
1
|
Route::get('/statistics', [StatisticsController::class, 'index']);
|
После этого при переходе по маршруту /statistics будет вызываться метод index контроллера StatisticsController, который будет отображать статистику посещений.
Обратите внимание, что код приведен в качестве примера и может потребовать доработки в зависимости от вашей конкретной реализации и требований.