Prestashop 使用字符串作为ID类型扩展ObjectModel

Prestashop 使用字符串作为ID类型扩展ObjectModel,prestashop,prestashop-1.7,Prestashop,Prestashop 1.7,我正在使用Prestashop 1.7.1.2。 我想创建一个扩展ObjectModel的类,但我需要一个主要Id类型的字符串,而不是整数。 我如何才能做到这一点,我必须重写ORM的load()函数吗 提前谢谢到目前为止还没有人帮过你。我会努力和你一起思考。我不是prestashop开发方面的专家。但希望能让你走得更远 这就是我制作ObjectModel的方式。在phpmyadmin表中是否将主ID配置为字符串 /** * @see ObjectModel::$properties */ p

我正在使用Prestashop 1.7.1.2。 我想创建一个扩展ObjectModel的类,但我需要一个主要Id类型的字符串,而不是整数。 我如何才能做到这一点,我必须重写ORM的load()函数吗


提前谢谢

到目前为止还没有人帮过你。我会努力和你一起思考。我不是prestashop开发方面的专家。但希望能让你走得更远

这就是我制作ObjectModel的方式。在phpmyadmin表中是否将主ID配置为字符串

/**
 * @see ObjectModel::$properties
 */
public $id_product;
public $serial_key;

/**
 * @see ObjectModel::$definition
 */

public static $definition = array(
    'table' => 'avanto_keys',
    'primary' => 'id_avanto_keys',
    'multilang' => FALSE,
    'fields' => array(
        'id_product' =>           array('type' => self::TYPE_ID),
        'serial_key' =>           array('type' => self::TYPE_STRING),
    ),
);

当然,我怎么忘了!我将prestashop的产品id作为主键,将外部参照id作为索引列。当我需要使用外部参照Id进行实例化时,我会运行一个直接的Db查询,然后对对象进行实例化。这也可以改进,以便在外部参照id或主id实例化之间进行选择

class ProductXrefMap extends ObjectModel {
    public $id_xref; //guid from mssql
    public $date;    
    public $force_id = true;
    public static $definition = array(
        'table' => 'product_xref_table',
        'primary' => 'id_product', //prestashop's product id
        'fields' => array(
            'id_xref' => array('type' => self::TYPE_STRING, 'validate' => 'isString', 'required' => true, 'size' => 64),
            'date' => array('type' => self::TYPE_DATE, 'validate' => 'isDate', 'required' => true)
        )
    );
    public function __construct ($id_xref=null)
    {
        parent::__construct();
        if ($id_xref) 
        {
            $sql_select = "SELECT * FROM " . _DB_PREFIX_ . "product_xref_table WHERE id_xref = '" . $id_xref . "'";
            if ($row = Db::getInstance()->getRow( $sql_select ) )
                $this->hydrate($row);
        } 
    }
}

谢谢你的努力。是的,它被配置为varchar(64)(因为它是一个交叉引用字段,带有来自mssql数据库的Guid)。因此,当我创建该类的新实例时,ID字段被转换/解析为Int(在这种情况下,ID_avanto_keys)。我用了一个变通方法,我想它能奏效。你能和我们分享解决方案吗?也许有一天我们会需要它。谢谢