Как реализовать статистику посещений в Laravel?

152
08 апреля 2019, 04:40

Ребят, всех приветствую. В общем столкнулся с таким вопросом.

Упрощу несущественные нюансы. В базе есть таблица statistic_visit Примерно с такой структурой: id|visit|date То есть грубо говоря при каждом обновлении страницы, должен инкреметироваться visit где дата соответствует сегодняшней.

Зондируя просторы интернета и документаций, подумал что правильнее будет сделать через Provider:

class StatisticVisitProvider extends ServiceProvider
{
    public function boot(Request $request)
    {
        $toDay = date("Y-m-d");
        StatisticVisit::where('day', $toDay)->increment('view', 1);
    }
    public function register()
   {
   }
}

Все отрабатывает, но есть одна проблемка. В базу он при каждом обновлении плюсует не на 1, а на большее число, например 3, 80. Видимо зависимо от того какую страницу открываю.

И соответственно напрашивается вывод, что провайдер отрабатывает не один раз. То есть при каждом ajax запросе, или подгрузке какого либо виджета он отрабатывает инкремент.

Прошу подсказать, как правильно это реализовать, на верном ли я пути если нет то направить.

Заранее премного благодарен.

Answer 1

Этот вариант уже озвучивался в комментарии выше. Я бы тоже делал через middleware. По поводу того, что нужно разграничивать ajax и обычный клиентский синхронный http запрос тут есть несколько вариантов:

  • использовать /api руты для ajax вызовов, а мониторить только все оставшиеся руты. (соответственно, к ним и применить middleware)
  • проверять в middlrware тип запроса

https://stackoverflow.com/questions/29231587/laravel-check-if-ajax-request

READ ALSO
Фильтр товаров через input WooCommerce

Фильтр товаров через input WooCommerce

Предисловие: Есть фильтр товаров, использую плагин WooCommerce Product Filter, по умолчанию стоит Range Filter через слайдер(ползунок), но у меня задача, что...

173
Вывод категорий с подкатегориями

Вывод категорий с подкатегориями

Как мне вывести на одной странице все родительские категории со ссылками на их дочерние категории, структура примерно такая:

185