Share
Dalam artikel ini kita akan belajar menggunakan package yang dibuat oleh coderflexx, yang mana package ini dapat dengan mudah melihat seberapa banyak views dari berbagai model yang kita punya.
Instalasi Laravisits
Buka terminal Anda dan pastikan aktif di project laravel Anda, dan silakan jalankan perintah untuk menginstal packagenya seperti:
composer require coderflexx/laravisit
bashCopy
Setelah itu, silakan publish vendor nya seperti:
php artisan vendor:publish --provider="Coderflex\\Laravisit\\LaravisitServiceProvider"
bashCopy
Jika sudah, sekarang kita bisa lakukan migrate:
php artisan migrate
bashCopy
Dengan begitu, dia akan memigrasi tabel yang dibawa nya by default yaitu laravisits
.
Penggunaan
Untuk menggunakan nya sangat mudah sekali, hanya tinggal mengimplementasikan interface CanVisit
di model yang kita ingin liat visitor nya. Dalam contoh ini saya akan menganggap bahwa Anda mempunyai model Product
dan juga Article
.
Pada model Product
silakan tambahkan interface dan trait nya seperti berikut:
namespace App\Models; use Coderflex\Laravisit\Concerns\CanVisit; use Coderflex\Laravisit\Concerns\HasVisits; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class Product extends Model implements CanVisit { use HasFactory; use HasVisits; }
phpCopy
Setelah itu, maka kita bisa langsung menggunakan nya pada saat view untuk produk yang kita punya. Pada controller nya biasanya kan seperti ini:
public function show(Product $product) { return view('products.show', compact('product')); }
phpCopy
Nah untuk menggunakannya simple dengan tinggal menambahkan method visit
seperti:
public function show(Product $product) { $product->visit(); return view('products.show', compact('product')); }
phpCopy
Dan sekarang, jika Anda kunjungi http://laravisits.test/products/1
harusnya data akan masuk di database yang isinya kurang lebih seperti ini:
id: 1, visitable_type: "App\Models\Product", visitable_id: 1, data: "[]", created_at: "2022-12-28 08:58:42", updated_at: "2022-12-28 08:58:42",
bashCopy
With Ip Address
Jika Anda perhatikan, itu datanya masih array yang kosong, mungkin kalian berfikir apa kira-kira isi dari field data tersebut. Sebenarnya itu tergantung kita, jika kita ingin record ip address nya bisa dengan menambahkan method withIp()
seperti:
$product->visit()->withIP();
phpCopy
With Session
Atau, jika kalian ingin juga menambahkan session nya, bisa juga dengan cara seperti:
$product->visit()->withIP()->withSession();
phpCopy
With User
Dan jika kalian ingin menambahkan siapa user nya, bisa dengan cara:
$product->visit()->withIP()->withSession()->withUser();
phpCopy
Semudah itu saja, untuk saat ini, saya akan contoh kan pada model Article
, pada model Article
silakan masukan trait dan juga interface nya seperti product tadi.
namespace App\Models; use Coderflex\Laravisit\Concerns\CanVisit; use Coderflex\Laravisit\Concerns\HasVisits; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class Article extends Model implements CanVisit { use HasFactory; use HasVisits; }
phpCopy
Kemudian, pada controller nya kita akan buat seperti:
public function show(Article $article) { $article->visit()->withIP()->withSession()->withUser(); return view('articles.show', compact('article')); }
phpCopy
Dan sekarang jika kita kunjungi http://laravisits.test/articles/1
, maka harusnya data akan sudah masuk ke dalam tabel laravisits
, namun kali ini datanya tidak kosong.
id: 2, visitable_type: "App\Models\Article", visitable_id: 1, data: "{"ip": "127.0.0.1", "session": "8WHlQIp7DPLnnU5xZKSyGNUpnMpjTAVBIXFYd7SX", "user_id": null}", created_at: "2022-12-28 09:04:35", updated_at: "2022-12-28 09:04:35",
bashCopy
Jika seandainya ada user yang sedang login, maka data untuk user_id tidak akan null
seperti contoh di atas.
Track User
By default, dia akan melihat model User
yang ada pada \Coderflex\Laravisit\Models\User
, itu bisa di ganti tepat pada file konfigurasi nya.
return [ 'user_namespace' => "\Coderflex\Laravisit\Models\User", ];
phpCopy
By default dia akan membaca ip address, sehingga itu tidak akan auto nambah jika terus-terusan di refresh.
Kita juga dapat melilhat dari berbagai popularitas yang kita inginkan, contoh nya itu entah paling banyak di kunjungin hari ini, minggu ini, bulan ini, dll.
Popular Time
Semua fungsi yang bisa di gunakan kurang lebih seperti ini:
Methods | Example Usages |
---|---|
withTotalVisitCount() | Post::withTotalVisitCount()->first()->visit_count_total |
popularAllTime() | Post::popularAllTime()->get() |
popularToday() | Post::popularToday()->get() |
popularLastDays() | Post::popularLastDays(10)->get() |
popularThisWeek() | Post::popularThisWeek()->get() |
popularLastWeek() | Post::popularLastWeek()->get() |
popularThisMonth() | Post::popularThisMonth()->get() |
popularLastMonth() | Post::popularLastMonth()->get() |
popularThisYear() | Post::popularThisYear()->get() |
popularLastYear() | Post::popularLastYear()->get() |
popularBetween() | Post::popularBetween(Carbon::createFromDate(2019, 1, 9), Carbon::createFromDat(2022, 1, 3))->get(); |
Untuk penggunaan nya mudah saja, kita akan ambil contoh untuk popular minggu ini:
public function index() { $products = Article::query()->popularThisWeek()->get(); return view('products.index', compact('products')); }
phpCopy
Dan dia akan menunjukkan mana yang paling popular pada minggu ini. Anda bisa pelajari lebih lanjut tentang package ini disini. Namun untuk penggunaan nya sendiri, kurang lebih seperti contoh di atas.
Semoga artikel ini bermanfaat, saya Irsyad, saya akan melihat Anda di artikel selanjutnya.