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.
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.
Buka terminal Anda dan pastikan aktif di project laravel Anda, dan silakan jalankan perintah untuk menginstal packagenya seperti:
composer require coderflexx/laravisit
Setelah itu, silakan publish vendor nya seperti:
php artisan vendor:publish --provider="Coderflex\\Laravisit\\LaravisitServiceProvider"
Jika sudah, sekarang kita bisa lakukan migrate:
php artisan migrate
Dengan begitu, dia akan memigrasi tabel yang dibawa nya by default yaitu laravisits
.
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;
}
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'));
}
Nah untuk menggunakannya simple dengan tinggal menambahkan method visit
seperti:
public function show(Product $product)
{
$product->visit();
return view('products.show', compact('product'));
}
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",
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();
Atau, jika kalian ingin juga menambahkan session nya, bisa juga dengan cara seperti:
$product->visit()->withIP()->withSession();
Dan jika kalian ingin menambahkan siapa user nya, bisa dengan cara:
$product->visit()->withIP()->withSession()->withUser();
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;
}
Kemudian, pada controller nya kita akan buat seperti:
public function show(Article $article)
{
$article->visit()->withIP()->withSession()->withUser();
return view('articles.show', compact('article'));
}
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",
Jika seandainya ada user yang sedang login, maka data untuk user_id tidak akan null
seperti contoh di atas.
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",
];
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.
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'));
}
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.
Let's start living like no one can help us in any event, so that when we are helped in certain times, it becomes a plus in itself.