サイトのアクセス数が分かるアクセスカウンターをLaravelで実装

サイトのアクセス数が分かるアクセスカウンターをLaravelで実装

1112 回閲覧されました

みなさんこんにちは、jonioです。

サイトのアクセス数を表示する為のアクセスカウンターをLaravelで実装したかったのですがやり方が分かったのでアウトプットの記事を残します。

Laravelのバージョン

私は8ですがそれ以外も対応していると思います。

注意点

ルーティングとcssは載せなくてもいいと思うのでコードを掲載しません。

コントローラーとビューに関しても必要な部分しか解説しません。

デモ

デモは↓です。(CSSで調節しています)

モデルの作成とマイグレーションファイルの記述

モデルとマイグレーションファイルを作成しますが↓のコマンドを叩きます。

そしてマイグレーションファイルに記述します。

18行目を追加していますがサイト訪問者を数える為のカラムを作成しています。

「->default(0)」がある理由はこれがないとカラムの最初の値が1になり1人目のサイト訪問者の総アクセス数が2になるのですが総アクセス数を1からにする為です。

マイグレーションファイルの記述が終わったらphp artisan migrateをします。

モデルの設定

AccessCounter.phpを↓にします。

16行目でidカラムも指定していますが理由は後で分かります。

コントローラー

コントローラーのコードを↓にします。

16行目でaccess_countersテーブルのid=1のカラムを取得しています。

18行目〜23行目はid=1のカラムがない場合にidが2のカラム(1以外なら何でもいいです)を作成します。

他のidカラムを作成する為にはモデルで$fillableの中にidカラムを入れないといけないのでモデルにidカラムも入れていました。

18行目〜23行目についてですが今回はアクセスカウンター用のテーブルであるaccess_countersテーブルを使いカラムはid=1しかないので必要ないです。

しかし他の情報が入っているテーブルにアクセスカウンター用のカラムを混ぜたり複数ページのアクセスカウンターを設定する時はカラムを新たに作らないといけないので18行目〜23行目が必要になります。

ビュー

ビューに↓のコードを追加します。

これで完成です。

欠点

同じ人が連続でアクセスしてアクセスをカウントされます。

1ページにつき数時間経たないとアクセスカウントできないようにした方がアクセスカウンターとして機能が強いと思います。