Returns an array of modified fields and values with data preparation;
adds column aggregation inheritance and converts Records into primary
key values.
public getPrepared ( array $array = [] ) : array | ||
$array | array | |
return | array |
/** * inserts a record into database * * @param Doctrine_Record $record record to be inserted * @return boolean */ public function insert(Doctrine_Record $record) { // listen the onPreInsert event $event = new Doctrine_Event($this, Doctrine_Event::RECORD_INSERT); $record->preInsert($event); if (!$event->skipOperation) { $array = $record->getPrepared(); if (empty($array)) { return false; } $table = $record->getTable(); $keys = $table->getPrimaryKeys(); $seq = $record->getTable()->sequenceName; if (!empty($seq)) { $id = $this->conn->sequence->nextId($seq); $name = $record->getTable()->getIdentifier(); $array[$name] = $id; $record->assignIdentifier($id); } $this->conn->insert($table->getTableName(), $array); if (empty($seq) && count($keys) == 1 && $keys[0] == $table->getIdentifier() && $table->getIdentifierType() != Doctrine::IDENTIFIER_NATURAL) { if (strtolower($this->conn->getName()) == 'pgsql') { $seq = $table->getTableName() . '_' . $keys[0]; } $id = $this->conn->sequence->lastInsertId($seq); if (!$id) { $id = $table->getMaxIdentifier(); } $record->assignIdentifier($id); } else { $record->assignIdentifier(true); } } $record->getTable()->addRecord($record); $record->postInsert($event); return true; }
/** * Class Table Inheritance code. * Support dropped for 0.10/1.0. */ private function _formatDataSet(Doctrine_Record $record) { $table = $record->getTable(); $dataSet = array(); $component = $table->getComponentName(); $array = $record->getPrepared(); foreach ($table->getColumns() as $columnName => $definition) { if (!isset($dataSet[$component])) { $dataSet[$component] = array(); } if (isset($definition['owner']) && !isset($dataSet[$definition['owner']])) { $dataSet[$definition['owner']] = array(); } $fieldName = $table->getFieldName($columnName); if (isset($definition['primary']) && $definition['primary']) { continue; } if (!array_key_exists($fieldName, $array)) { continue; } if (isset($definition['owner'])) { $dataSet[$definition['owner']][$fieldName] = $array[$fieldName]; } else { $dataSet[$component][$fieldName] = $array[$fieldName]; } } return $dataSet; }
/** * @todo DESCRIBE WHAT THIS METHOD DOES, PLEASE! */ public function processSingleInsert(Doctrine_Record $record) { $fields = $record->getPrepared(); if (empty($fields)) { return false; } $table = $record->getTable(); $identifier = (array) $table->getIdentifier(); $seq = $record->getTable()->sequenceName; if (!empty($seq)) { $id = $this->conn->sequence->nextId($seq); $seqName = $table->getIdentifier(); $fields[$seqName] = $id; $record->assignIdentifier($id); } $this->conn->insert($table, $fields); if (empty($seq) && count($identifier) == 1 && $identifier[0] == $table->getIdentifier() && $table->getIdentifierType() != Doctrine::IDENTIFIER_NATURAL) { if (strtolower($this->conn->getName()) == 'pgsql') { $seq = $table->getTableName() . '_' . $identifier[0]; } $id = $this->conn->sequence->lastInsertId($seq); if (!$id) { throw new Doctrine_Connection_Exception("Couldn't get last insert identifier."); } $record->assignIdentifier($id); } else { $record->assignIdentifier(true); } }