Расширение классов, расширяющих Zend_Db_Table_Row_Abstract

Мы создаем систему онлайн-платежей с использованием Zend Framework и пытаемся создать ее, чтобы было проще добавлять новые платежные системы. В настоящее время у нас есть реализация PayPal, но, возможно, мы захотим добавить и других провайдеров позже.

У нас есть объект Payment, расширяющий Zend_Db_Table_Row_Abstract, и объект Payments, расширяющий Zend_Db_Table_Abstract. Теперь в строке "Платеж" есть данные, специфичные для 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 Framework нашел кое-что об отношениях, но на самом деле мы не хотим этого делать. Кто-нибудь пробовал это раньше?

С уважением, Ларс

1 ответ

Вы заявили в class PayPalPayments что по умолчанию $_rowClass = 'PayPalPayment'?

Другие вопросы по тегам