扩展类,扩展Zend_Db_Table_Row_Abstract


Extending classes that extend Zend_Db_Table_Row_Abstract

我们正在使用Zend框架构建一个在线支付系统,我们试图将其设计为更容易添加新的支付系统。目前我们已经实现了PayPal,但也许我们以后也想添加其他提供商。

我们有一个Payment对象扩展了Zend_Db_Table_Row_Abstract和一个Payments对象扩展了Zend_Db_Table_Abstract。现在,Payment对象的行中有特定于PayPal的数据,我们希望将这些数据移动到另一个特定于PayPal的表中。这使我们能够在支付表中拥有支付的一般数据,而在另一个表中拥有支付提供者特定的数据。

现在我们尝试创建一个类PayPalPayment扩展Payment和一个类PayPalPayments扩展Zend_Db_Table_Abstract。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框架文档中找到了一些关于关系的东西,但这并不是我们真正想要的。有人试过吗?

问候,佬司

您是否在class PayPalPayments中声明默认的$_rowClass = 'PayPalPayment' ?