Example #1
0
	public function afterQuery(Atomik_Model_Builder $builder, Atomik_Model_Modelset $modelSet)
	{
		$modelName = $builder->name;
		$primaryKeyName = $builder->getPrimaryKeyField()->name;
		$manager = $builder->getManager();
		$db = $manager->getDbInstance();
		$rows = array();
		
		$dataQuery = $db->q()->select()
				->from($builder->tableName)
				->where(array($primaryKeyName => null));
		
		foreach ($modelSet as $row) {
			$primaryKey = $row[$primaryKeyName];
			$key = $modelName . ':' . $primaryKey;
			
			if (($cached = $this->_memcache->get($key)) !== false) {
				// cache hit
				$rows[] = $cached;
				continue;
			}
			
			$data = $dataQuery->setParams(array($primaryKey))->execute()->fetch();
			$this->_memcache->set($key, $data);
			$rows[] = $data;
		}
		
		$modelSet->setData($rows);
	}
	public function afterQuery(Atomik_Model_Builder $builder, Atomik_Model_Modelset $modelSet)
	{
		$primaryKeyName = $builder->getPrimaryKeyField()->name;
		$rows = array();
		
		// parses the results to rebuild the row with the dynamic fields
		foreach ($modelSet as $row) {
			$primaryKey = $row[$primaryKeyName];
			if ($row[$this->_prefix('id')] === null) {
				// no dyn field
				$rows[$primaryKey] = $this->_stripDynamicKeysFromRow($row);
				continue;
			}
			if (!isset($rows[$primaryKey])) {
				$rows[$primaryKey] = $this->_stripDynamicKeysFromRow($row);;
			}
			$rows[$primaryKey][$row[$this->_prefix('field_name')]] = $row[$this->_prefix('field_value')];
		}
		
		$modelSet->setData(array_values($rows));
	}