/** * @param Mana_Db_Model_Formula_Context $context * @param Mana_Db_Model_Formula_Entity $entity */ public function select($context, $entity) { switch ($context->getMode()) { default: $context->setMode($this->getName())->setEntityHelper($this); /* @var $dbHelper Mana_Db_Helper_Data */ $dbHelper = Mage::helper('mana_db'); /* @var $resource Mana_Db_Resource_Formula */ $resource = Mage::getResourceSingleton('mana_db/formula'); $context->incrementPrefix(); $alias = explode('.', $entity->getAlias()); $alias = array_pop($alias); $aggregateContext = $context->createChildContext()->setPrefix($context->getPrefix())->setEntity($entity->getEntity())->setProcessor($entity->getProcessor())->setAlias($alias); $select = $aggregateContext->getSelect()->from(array($aggregateContext->registerAlias($alias) => $resource->getTable($dbHelper->getScopedName($entity->getEntity()))), null); if ($entity->getJoin()) { foreach ($entity->getJoin() as $alias => $join) { $method = isset($join['type']) ? 'join' . ucfirst($join['type']) : 'joinInner'; $select->{$method}(array($aggregateContext->registerAlias($alias) => $resource->getTable($dbHelper->getScopedName($join['entity']))), $aggregateContext->resolveAliases($join['on']), null); } } if ($entity->getOrder()) { $select->order($aggregateContext->resolveAliases($entity->getOrder(), false)); } if ($entity->getWhere()) { $select->where($aggregateContext->resolveAliases($entity->getWhere())); } $context->setEntity($entity->getEntity())->setProcessor($entity->getProcessor())->setAlias($entity->getAlias())->setAggregateContext($aggregateContext); break; } }
/** * @param Mana_Db_Model_Formula_Context $context * @param Mana_Db_Model_Formula_Entity $entity */ public function select($context, $entity) { switch ($context->getMode()) { default: $context->setMode($this->getName())->setEntityHelper($this); $context->setEntity($entity->getEntity())->setProcessor($entity->getProcessor())->setAlias($entity->getAlias()); break; } }
/** * @param Mana_Db_Model_Formula_Context $context * @param Mana_Db_Model_Formula_Entity $entity */ public function select($context, $entity) { switch ($context->getMode()) { default: if (!$context->hasAlias($entity->getAlias()->asString(0))) { /* @var $resource Mana_Db_Resource_Formula */ $resource = Mage::getResourceSingleton('mana_db/formula'); /* @var $dbHelper Mana_Db_Helper_Data */ $dbHelper = Mage::helper('mana_db'); /* @var $joinClosure Mana_Db_Model_Formula_Closure_ForeignJoinEnd */ $joinClosure = Mage::getModel('mana_db/formula_closure_foreignJoinEnd', compact('context', 'entity')); $context->getAlias()->each($joinClosure); } $context->setEntity($entity->getEntity())->setProcessor($entity->getProcessor())->setAlias($entity->getAlias())->setEntityHelper($this); break; } }
/** * * @param Mana_Db_Model_Formula_Context $context * @param Mana_Db_Model_Formula_Entity $entity */ public function select($context, $entity) { switch ($context->getMode()) { default: $context->setMode($this->getName())->setEntityHelper($this); /* @var $resource Mana_Db_Resource_Formula */ $resource = Mage::getResourceSingleton('mana_db/formula'); /* @var $dbHelper Mana_Db_Helper_Data */ $dbHelper = Mage::helper('mana_db'); foreach ($entity->getAggregateFields() as $field) { if (!$context->hasAlias($field['alias'])) { $context->getSelect()->joinLeft(array($context->registerAlias($field['alias']) => $resource->getTable($dbHelper->getScopedName($field['entity']))), $context->resolveAliases($field['join']), null); } } $context->setEntity($entity->getEntity())->setProcessor($entity->getProcessor())->setAlias($entity->getAlias()); break; } }