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;