Skip to the content.

فصل ۵: مدیریت داده‌ها (Models)

این فصل به شما نشان می‌دهد که چگونه با استفاده از کلاس BaseModel در PrestaSDK، به سادگی با دیتابیس کار کنید. این کلاس با ارث‌بری از ObjectModel پرستاشاپ، بسیاری از کارهای تکراری را خودکار می‌کند.

۵.۱. ساخت یک Model

برای تعریف یک موجودیت (Entity) جدید که به یک جدول در دیتابیس متصل است، یک کلاس در پوشه src/Entity/ (یا هر مسیر دلخواه دیگر) ایجاد کرده و آن را از PrestaSDK\V070\Model\BaseModel ارث‌بری کنید. مراحل اصلی:

// src/Entity/File.php

namespace PrestaWare\WaBulkUpdate\Entity;

use PrestaSDK\V070\Model\BaseModel;

class File extends BaseModel
{
    // 1. تعریف ثابت‌های اصلی
    const TABLE = 'wabulkupdate_file';
    const ID = 'id_wabulkupdate_file';

    // 2. تعریف ثابت‌های ویژه برای فعال‌سازی قابلیت‌های BaseModel
    const CREATED_AT_COLUMN = 'date_add';
    const UPDATED_AT_COLUMN = 'date_upd';
    const STATUS_COLUMN = 'status';
    // const ID_SHOP_COLUMN = 'id_shop'; // اگر جدول شما به فروشگاه مرتبط است

    // 3. تعریف پراپرتی‌های کلاس
    public $id;
    public $file_name;
    public $status;
    public $date_add;
    public $date_upd;

    // 4. تعریف ساختار مدل برای پرستاشاپ
    public static $definition = [
        'table' => self::TABLE,
        'primary' => self::ID,
        'fields' => [
            'file_name' => ['type' => self::TYPE_STRING, 'validate' => 'isFileName', 'required' => true, 'size' => 255],
            'status' => ['type' => self::TYPE_BOOL, 'validate' => 'isBool'],
            'date_add' => ['type' => self::TYPE_DATE, 'validate' => 'isDate'],
            'date_upd' => ['type' => self::TYPE_DATE, 'validate' => 'isDate'],
        ],
    ];
}

۵.۲. ویژگی‌های BaseModel

کلاس BaseModel قابلیت‌های زیادی را به صورت خودکار به مدل شما اضافه می‌کند:

مدیریت خودکار تاریخ‌ها

اگر ثابت‌های CREATED_AT_COLUMN و UPDATED_AT_COLUMN را تعریف کنید:

if ($file->safeSave()) { // این کد اجرا نخواهد شد echo “File saved successfully!”; } else { echo “Validation failed!”; } ```

مدیریت خودکار id_shop

اگر ماژول شما در حالت چندفروشگاهی (multishop) کار می‌کند و جدول شما ستون id_shop دارد، کافیست ثابت ID_SHOP_COLUMN را تعریف کنید. BaseModel به صورت خودکار هنگام ایجاد یک رکورد جدید، id_shop مربوط به فروشگاه فعلی را در آن ذخیره می‌کند.