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 export(Atomik_Model_Builder $builder) { $definition = new Atomik_Db_Definition($builder->getManager()->getDbInstance()); $definition->dropBeforeCreate(); $tableName = $builder->tableName; $table = $definition->table($tableName); foreach ($builder->getFields() as $field) { list($type, $length) = $field->getSqlType(); $column = $table->createColumn($field->name, $type, $length, $field->getOptions('sql-')); if ($builder->getPrimaryKeyField() == $field) { $table->primaryKey($field->name); $column->options['auto-increment'] = true; } if ($builder->isFieldPartOfReference($field)) { $table->index($field->name, $field->getOption('sql-index', null)); } } $builder->getBehaviourBroker()->notifyBeforeExport($builder, $definition); $sql = $definition->toSql(); $builder->getBehaviourBroker()->notifyAfterExport($builder, $sql); return $sql; }
public function afterDelete(Atomik_Model_Builder $builder, Atomik_Model $model) { $primaryKey = $model->getPrimaryKey(); $db = $builder->getManager()->getDbInstance(); $tableName = $builder->tableName; $foreignFieldName = $this->_prefix($tableName) . '_' . $builder->getPrimaryKeyField()->name; $tableName = $this->_suffix($tableName); $db->delete($tableName, array($foreignFieldName => $primaryKey)); }