Prestashop - 对象模型创建抛出异常
Prestashop - Object Model creation throws exception
我有这个对象模型:
<?php
class DnDPayment extends ObjectModel {
public $id_dnd_payments;
public $bank;
public $payer;
public $amount;
public $reference;
public $date_add;
public static $definition_array = array(
'table' => 'dnd_payments',
'primary' => 'id_dnd_payments',
'multilang' => false,
'fields' => array(
'bank' => array('type' => self::TYPE_STRING, required => true),
'payer' => array('type' => self::TYPE_STRING, required => true),
'amount' => array('type' => self::TYPE_STRING, required => true),
'reference' => array('type' => self::TYPE_STRING, required => true),
'date_add' => array('type' => self::TYPE_STRING, required => true)
)
);
public static function savePayment($bank, $payer, $amount, $reference) {
$logger = new FileLogger(0);
$logger->setFilename(_PS_ROOT_DIR_ . "/log/debug.log");
$logger->logDebug($bank . ' :: ' . $payer . ' :: ' . $amount);
Db::getInstance()->insert('dnd_payments', array(
'bank' => $bank,
'payer' => $payer,
'amount' => $amount,
'reference' => $reference,
'date_add' => date('Y-m-d H:i:s')
));
}
}
当我尝试像这样创建一个新实例时:new DnDPayments();
,我遇到了这个异常:
[message:protected] => Identifier or table format not valid for class DnDPayment
这是我用来创建 table:
的 SQL 代码
CREATE TABLE IF NOT EXISTS `PREFIX_dnd_payments` (
`id_dnd_payments` int(11) NOT NULL AUTO_INCREMENT,
`bank` varchar(128) NOT NULL,
`payer` varchar(128) NOT NULL,
`amount` decimal(15,3) NOT NULL,
`reference` varchar(128) NOT NULL,
`date_add` datetime NOT NULL,
PRIMARY KEY (`id_dnd_payments`)
) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
我做错了什么?
定义变量应该是 $definition
而不是 $definition_array
。小心错别字。最好是从其他核心copy过来class修改一下
祝你好运。
我有这个对象模型:
<?php
class DnDPayment extends ObjectModel {
public $id_dnd_payments;
public $bank;
public $payer;
public $amount;
public $reference;
public $date_add;
public static $definition_array = array(
'table' => 'dnd_payments',
'primary' => 'id_dnd_payments',
'multilang' => false,
'fields' => array(
'bank' => array('type' => self::TYPE_STRING, required => true),
'payer' => array('type' => self::TYPE_STRING, required => true),
'amount' => array('type' => self::TYPE_STRING, required => true),
'reference' => array('type' => self::TYPE_STRING, required => true),
'date_add' => array('type' => self::TYPE_STRING, required => true)
)
);
public static function savePayment($bank, $payer, $amount, $reference) {
$logger = new FileLogger(0);
$logger->setFilename(_PS_ROOT_DIR_ . "/log/debug.log");
$logger->logDebug($bank . ' :: ' . $payer . ' :: ' . $amount);
Db::getInstance()->insert('dnd_payments', array(
'bank' => $bank,
'payer' => $payer,
'amount' => $amount,
'reference' => $reference,
'date_add' => date('Y-m-d H:i:s')
));
}
}
当我尝试像这样创建一个新实例时:new DnDPayments();
,我遇到了这个异常:
[message:protected] => Identifier or table format not valid for class DnDPayment
这是我用来创建 table:
的 SQL 代码CREATE TABLE IF NOT EXISTS `PREFIX_dnd_payments` (
`id_dnd_payments` int(11) NOT NULL AUTO_INCREMENT,
`bank` varchar(128) NOT NULL,
`payer` varchar(128) NOT NULL,
`amount` decimal(15,3) NOT NULL,
`reference` varchar(128) NOT NULL,
`date_add` datetime NOT NULL,
PRIMARY KEY (`id_dnd_payments`)
) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
我做错了什么?
定义变量应该是 $definition
而不是 $definition_array
。小心错别字。最好是从其他核心copy过来class修改一下
祝你好运。