/** * Adds a record to collection * * @param Doctrine_Record $record record to be added * @param string $key optional key for the record * @return boolean */ public function add($record, $key = null) { if (isset($this->referenceField)) { $value = $this->reference->get($this->relation->getLocalFieldName()); if ($value !== null) { $record->set($this->referenceField, $value, false); } else { $record->set($this->referenceField, $this->reference, false); } $relations = $this->relation['table']->getRelations(); foreach ($relations as $relation) { if ($this->relation['class'] == $relation['localTable']->getOption('name') && $relation->getLocal() == $this->relation->getForeignFieldName()) { $record->{$relation}['alias'] = $this->reference; break; } } } $oid = $record->oid(); if (isset($this->oids[$oid])) { return false; } if (isset($key)) { if (isset($this->data[$key])) { return false; } $this->data[$key] = $record; $this->oids[$oid] = true; return true; } if (isset($this->keyColumn)) { $value = $record->get($this->keyColumn); if ($value === null) { throw new Doctrine_Collection_Exception("Couldn't create collection index. Record field '" . $this->keyColumn . "' was null."); } $this->data[$value] = $record; } else { $this->data[] = $record; } $this->oids[$oid] = true; return true; }