#P1718
RESOURCE /v2/categories
Category Resource Management
این بخش شامل مدیریت کامل دستهبندیها (Categories) است.
این کنترلر به طور پیشفرض در متد لیستگیری، فقط دستهبندیهای اصلی (بدون والد) را برمیگرداند. همچنین از فیلترهای مکان و نوع پشتیبانی میکند.
1. List Categories (Index)
URL:
/v2/categoriesMethod: 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/categoriesMethod: 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)
1. Branch = Request->branch
2. Main IS NULL (Root Categories)
↓
Has "place" param?
Yes
Find ID from `articles_places`
(by ID or Slug)
↓
Filter:
(by ID or Slug)
↓
Filter:
whereIn('places', [ID])No
Skip Place Filter
↓
Pagination (15 items)
↓
Return Resource Collection