2011-08-17 161 views
0

我們正在構建一個使用Zend Framework的在線支付系統,我們試圖設計它來使添加新的支付系統變得更加容易。目前我們有一個針對PayPal的實現,但也許我們希望以後再添加其他提供者。擴展擴展類Zend_Db_Table_Row_Abstract

我們有一個擴展了Zend_Db_Table_Row_Abstract的支付對象和一個擴展了Zend_Db_Table_Abstract的Payments對象。 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框架文檔中關係中的一些東西,但是這不是真的,我們要怎麼做。任何人之前嘗試過?

問候, 拉爾斯

回答

1

你在class PayPalPayments默認$_rowClass = 'PayPalPayment'申報?

+0

是的,我們做到了。問題是,如果我們這樣做: $ p = new PayPalPayments(); $ payment = $ p-> createRow(); $ payment無法識別Payments表中的列,只能識別我們新的paypal_payments表中的列。因此,當我們嘗試爲付款表中的某個屬性設置值時,它會給出該列不在該行中的錯誤。 – Lars