কোড: getCategoryWiseVisitors ফাংশন ব্যাখ্যা
public function getCategoryWiseVisitors(Request $request)
-
এটা একটি Laravel Controller method যা HTTP request গ্রহণ করে।
-
Request $requestদ্বারা আমরা ইউজারের অনুরোধের ডেটা (যেমন GET বা POST প্যারামিটার) পেতে পারি।
Step 1: ডাটাবেস থেকে ডেটা নেওয়া
$visitors = VisitorLog::select(
'page_type',
'page_name',
DB::raw('COUNT(*) as total')
)
->groupBy('page_type', 'page_name')
->get();
-
VisitorLogহলো একটি Eloquent মডেল, যা সাধারণতvisitor_logsটেবিলের সাথে যুক্ত থাকে। -
এখানে আমরা তিনটি কলাম নির্বাচন করছি:
-
page_type– পেজের ধরন (যেমন: category, product, blog ইত্যাদি) -
page_name– পেজের নাম -
COUNT(*) as total– কতবার ওই পেজটি ভিজিট হয়েছে তার সংখ্যা
-
-
groupBy('page_type', 'page_name') – একে একে প্রতিটি পেজের জন্য গ্রুপ তৈরি করে এবং তাদের ভিজিট সংখ্যা গণনা করে।
-
get() – query execute করে ডেটা collection আকারে নিয়ে আসে।
উদাহরণ:
page_type | page_name | total
category | Food | 50
category | Drink | 30
product | iPhone | 100
product | MacBook | 60
Step 2: প্রতিটি page_type এর সর্বাধিক ভিজিটেড পেজ বের করা
$result = $visitors->groupBy('page_type')->map(function ($pages, $type) {
$mostVisited = $pages->sortByDesc('total')->first();
return [
'page_type' => $type,
'most_visited_page' => $mostVisited->page_name,
'total_visits' => $mostVisited->total
];
})->values();
-
প্রথমে আমরা
$visitorscollection কে page_type অনুসারে গ্রুপ করি:-
উদাহরণ:
'category'গ্রুপে সব category পেজ,'product'গ্রুপে সব product পেজ।
-
-
mapfunction ব্যবহার করে আমরা প্রতিটি group এ যাই:-
$pages->sortByDesc('total')– পেজগুলোকে descending order-এ সাজাই ভিজিট সংখ্যা অনুযায়ী। -
first()– সবচেয়ে বেশি ভিজিট পাওয়া পেজটি নেয়।
-
-
শেষে আমরা একটি array বানাই যেখানে আছে:
-
page_type -
most_visited_page– সবচেয়ে ভিজিটেড পেজের নাম -
total_visits– সেই পেজের ভিজিট সংখ্যা
-
-
values()– collection কে index পুনর্গঠন করে, যাতে JSON response ভালো দেখায়।
উদাহরণ আউটপুট:
[
[
'page_type' => 'category',
'most_visited_page' => 'Food',
'total_visits' => 50
],
[
'page_type' => 'product',
'most_visited_page' => 'iPhone',
'total_visits' => 100
]
]

Step 3: JSON রেসপন্স পাঠানো
return response()->json([
'status' => true,
'message' => 'Most visited page by page type',
'data' => $result
], 200);
-
response()->json()– HTTP JSON response তৈরি করে। -
এখানে আমরা পাঠাচ্ছি:
-
status→ রিকোয়েস্ট সফল হয়েছে কি না -
message→ বর্ণনামূলক টেক্সট -
data→ Step 2 থেকে প্রাপ্ত array
-
-
200→ HTTP status code, যা নির্দেশ করে যে request সফল হয়েছে।
✅ সারসংক্ষেপ:
-
ডাটাবেস থেকে page_type এবং page_name অনুযায়ী ভিজিট সংখ্যা গণনা করা।
-
প্রতিটি page_type এর সবচেয়ে বেশি ভিজিটেড পেজ বের করা।
-
JSON আকারে response পাঠানো।

0 Comments