Recents in Beach

Most Visited Page - সবচেয়ে বেশি ভিজিটেড পেজ - Laravel Controller

কোড: 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 টেবিলের সাথে যুক্ত থাকে।

  • এখানে আমরা তিনটি কলাম নির্বাচন করছি:

    1. page_type – পেজের ধরন (যেমন: category, product, blog ইত্যাদি)

    2. page_name – পেজের নাম

    3. 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();
  • প্রথমে আমরা $visitors collection কে page_type অনুসারে গ্রুপ করি:

    • উদাহরণ: 'category' গ্রুপে সব category পেজ, 'product' গ্রুপে সব product পেজ।

  • map function ব্যবহার করে আমরা প্রতিটি 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 সফল হয়েছে।


সারসংক্ষেপ:

  1. ডাটাবেস থেকে page_type এবং page_name অনুযায়ী ভিজিট সংখ্যা গণনা করা।

  2. প্রতিটি page_type এর সবচেয়ে বেশি ভিজিটেড পেজ বের করা।

  3. JSON আকারে response পাঠানো।


Post a Comment

0 Comments