Prestashop 1.6, мой класс не работает в других модулях

Я создал модуль, в котором класс расширяется до ObjectModel: имя модуля:

<?php
if (!defined('_PS_VERSION_'))
    exit;

class StoreOrder extends ObjectModel
{
    public $id_store_order;
    public $id_customer;
    public $nature_piece;
    public $client_code;
    public $internal_reference;
    public $store_code;
    public $store_name;
    public $ticket_date;
    public $custumer_name;
    public $ticket_number;
    public $product_number;
    public $total_ht;
    public $total_ttc;
    public $payment_mode;

    public static $definition = array(
        'table' => 'ps_store_order',
        'primary' => 'id_store_order',
        'fields' => array(
            'id_store_order' => array('type' => self::TYPE_INT),
            'id_customer' => array('type' => self::TYPE_INT),
            'store_code' => array('type' => self::TYPE_STRING),
            'store_name' => array('type' => self::TYPE_STRING),
            'ticket_date' =>    array('type' => self::TYPE_STRING),
            'ticket_number' =>  array('type' => self::TYPE_STRING),
            'product_number' => array('type' => self::TYPE_STRING),
            'total_ht' => array('type' => self::TYPE_STRING),
            'total_ttc' => array('type' => self::TYPE_STRING),
            'payment_mode' => array('type' => self::TYPE_STRING),
        )
    );

    public function __construct()
  {
    parent::__construct();
    }

    public static function getByIdCustomer($id_customer) {
        $sql = "SELECT * FROM `ps_store_order` WHERE `id_customer` = ".$id_customer;
        $result = Db::getInstance()->executeS($sql);
        return $result;
    }


}

Но если я включу этот класс в другой модуль, чтобы использовать его, блокировка на шаге "_PS_VERSION_" не определена, и я удаляю условие, которое ничего не возвращает (код стандартный, я не знаю почему)

Спасибо вам..

1 ответ

  • Вы не должны проверять "_PS_VERSION_" на своих объектных моделях.
  • Не следует добавлять префикс "ps_" к имени таблицы в объектных моделях:

'table' => 'store_order',

попробуй это:

include_once _PS_MODULE_DIR_ . 'path-to-your-model';
dd(StoreOrder::getByIdCustomer(2));

Также рекомендуется использовать (int) для "$id_customer":

$sql = "SELECT * FROM `ps_store_order` WHERE `id_customer` = " . (int)$id_customer;
Другие вопросы по тегам