Skip to main content
#P1718

RESOURCE /v2/categories

Category Resource Management

این بخش شامل مدیریت کامل دسته‌بندی‌ها (Categories) است.
این کنترلر به طور پیش‌فرض در متد لیست‌گیری، فقط دسته‌بندی‌های اصلی (بدون والد) را برمی‌گرداند. همچنین از فیلترهای مکان و نوع پشتیبانی می‌کند.


1. List Categories (Index)

URL: /v2/categories
Method: GET
Controller: CategoryController@index

نکته مهم: این اندپوینت دارای فیلتر سخت‌گیرانه whereNull('main') است. یعنی فقط دسته‌بندی‌هایی که فیلد main آن‌ها خالی است (دسته‌بندی‌های والد) در خروجی ظاهر می‌شوند.

پارامترهای فیلترینگ (Query Params)

Parameter Type Description
branch mixed (معمولاً خودکار) فیلتر بر اساس شعبه.
type string فیلتر بر اساس نوع دسته‌بندی (مثلاً article, video و...).
place mixed شناسه (ID) یا نام مستعار (Slug) مکان.
سیستم ابتدا شناسه مکان را از جدول articles_places پیدا کرده و سپس دسته‌بندی‌هایی که ستون places آن‌ها برابر با آن شناسه باشد را فیلتر می‌کند.
limit integer محدودیت تعداد آیتم‌ها در هر صفحه.

مثال پاسخ

{
  "status": true,
  "time": 1715011000,
  "data": [
    {
      "id": 5,
      "title": "تکنولوژی",
      "slug": "tech",
      "image": "https://...",
      "main": null, // همیشه null است در این لیست
      "places": "[1, 2]" // JSON String
    }
  ],
  "links": { ... }
}

2. Create Category (Store)

URL: /v2/categories
Method: POST
Controller: CategoryController@store

یک دسته‌بندی جدید ایجاد می‌کند.

بدنه درخواست (Body Parameters)

Field Type Description
title string (الزامی) عنوان دسته‌بندی
slug string (الزامی) آدرس یکتا
main integer|null شناسه دسته‌بندی والد (اگر زیرمجموعه است). اگر خالی باشد، دسته اصلی محسوب می‌شود.
image string آدرس تصویر
description text توضیحات
places array لیستی از مکان‌های مرتبط. (در دیتابیس به صورت JSON ذخیره می‌شود).
branch integer (از طریق توکن/ریکوئست) شناسه شعبه.

3. Show Category

URL: /v2/categories/{id}
Method: GET
Controller: CategoryController@show

مشاهده جزئیات یک دسته‌بندی خاص.


4. Update Category

URL: /v2/categories/{id}
Method: PUT/PATCH
Controller: CategoryController@update

ویرایش اطلاعات دسته‌بندی. ورودی‌ها دقیقاً مشابه متد Store هستند.

{
    "status": true,
    "time": 1715012000
}

5. Delete Category

URL: /v2/categories/{id}
Method: DELETE
Controller: CategoryController@destroy

حذف کامل دسته‌بندی.

Index Logic Flowchart

Start Request
Apply Filters:
1. Branch = Request->branch
2. Main IS NULL (Root Categories)
Has "place" param?
Yes
Find ID from `articles_places`
(by ID or Slug)

Filter: whereIn('places', [ID])
No
Skip Place Filter
Pagination (15 items)
Return Resource Collection