@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
, который будет отображать статистику посещений.
Обратите внимание, что код приведен в качестве примера и может потребовать доработки в зависимости от вашей конкретной реализации и требований.