Прежде всего я бы организовал их по-другому. Это не plan_types, которые должны иметь plan.id. Это не логично. У вас есть таблица с plan_types, у которой есть plan.id и plan.name, а отношение находится в таблице плана через plan.type_id.
Эти зависимости решаются следующим образом:
class Payment_Plan extends Zend_Db_Table_Abstract
{
protected $_name = 'plan';
protected $_referenceMap = array(
'Plan' => array(
'columns' => 'plan_id',
'refTableClass' => 'Plan',
'refColumns' => 'id'
)
}
class Plan_Type extends Zend_Db_Table_Abstract
{
protected $_name = 'plan_types';
protected $_dependentTables = array('Plan_Type');
}
Позже вы можете иметь в классе PlanRow функцию:
public function type() {
return $this->findParentRow('Plan_Type');
}
и для получения всех планов типа x в классе строк Plan_type
public function entries() {
return $row->findDependentRowset('Plan');
}