我们正在使用Zend Framework构建在线支付系统,我们尝试将其设计为更容易添加新的支付系统。目前我们有PayPal的实现,但也许我们以后也想添加其他提供商。
我们有一个支付对象,它扩展了Zend_Db_Table_Row_Abstract和一个扩展Zend_Db_Table_Abstract的Payments对象。 Payment对象现在在其行中具有PayPal特定数据,我们希望将其移动到不同的PayPal特定表。这使我们能够获得付款表中的付款和另一个付款提供商特定数据的一般数据。
现在我们尝试使用PayPalPayment类扩展Payment和一个扩展Zend_Db_Table_Abstract的PayPalPayments类。 PayPalPayments引用我们的新数据库表和新对象PayPalPayment。我们现在想做的是:
$ppp = new PayPalPayments();
$p = $ppp->createRow();
//set a paypal specific property. setToken is defined in PayPalPayment
$p->setToken('lol');
//set a Payment general property. setStatus is defined in Payment
$p->setStatus('paid');
//write to database
$p->save();
但是,由于createRow只返回包含PayPalPayment表中列的行,因此我们无法使其正常工作。所以这会给出错误:
Specified column "pay_status" is not in the row
在Zend框架文档中找到了关于关系的一些东西,但这并不是我们想要的方式。有人试过这个吗?
此致 拉斯
答案 0 :(得分:1)
您是否在class PayPalPayments
中声明了默认$_rowClass = 'PayPalPayment'
?