Расширение классов, расширяющих Zend_Db_Table_Row_Abstract - PullRequest
0 голосов
/ 18 августа 2011

Мы строим систему онлайн-платежей с использованием 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 Ответ

1 голос
/ 18 августа 2011

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

...