1
0
mirror of synced 2025-01-18 22:41:43 +03:00

new attribute Doctrine::ATTR_LOAD_REFERENCES

This commit is contained in:
zYne 2007-05-30 10:20:21 +00:00
parent b8559e37ec
commit ecbecaa67b
7 changed files with 17 additions and 19 deletions

View File

@ -138,6 +138,7 @@ abstract class Doctrine_Configurable
case Doctrine::ATTR_DEFAULT_SEQUENCE:
case Doctrine::ATTR_EXPORT:
case Doctrine::ATTR_DECIMAL_PLACES:
case Doctrine::ATTR_LOAD_REFERENCES:
break;
case Doctrine::ATTR_SEQCOL_NAME:

View File

@ -103,6 +103,7 @@ class Doctrine_Manager extends Doctrine_Configurable implements Countable, Itera
Doctrine::ATTR_DQL_PARSER_CACHE => null,
Doctrine::ATTR_DQL_CACHE => null,
Doctrine::ATTR_SQL_CACHE => null,
Doctrine::ATTR_LOAD_REFERENCES => true,
Doctrine::ATTR_LISTENER => new Doctrine_EventListener(),
Doctrine::ATTR_LOCKMODE => 1,
Doctrine::ATTR_VLD => false,

View File

@ -145,10 +145,9 @@ abstract class Doctrine_Record extends Doctrine_Access implements Countable, Ite
// get the table of this class
$this->_table = Doctrine_Manager::getInstance()
->getTable(get_class($this));
$exists = false;
}
// initialize the filter object
$this->_filter = new Doctrine_Record_Filter($this);
@ -370,7 +369,7 @@ abstract class Doctrine_Record extends Doctrine_Access implements Countable, Ite
$this->_data[$k] = $v;
}
$this->_data = $this->_filter->cleanData($this->_data);
$this->prepareIdentifiers();
$this->prepareIdentifiers(true);
}
/**
* prepareIdentifiers
@ -1254,18 +1253,10 @@ abstract class Doctrine_Record extends Doctrine_Access implements Countable, Ite
* @param string $name
* @return void
*/
final public function loadReference($name)
public function loadReference($name)
{
$fk = $this->_table->getRelation($name);
if ($fk->isOneToOne()) {
$this->_references[$name] = $fk->fetchRelatedFor($this);
} else {
$coll = $fk->fetchRelatedFor($this);
$this->_references[$name] = $coll;
}
$rel = $this->_table->getRelation($name);
$this->_references[$name] = $rel->fetchRelatedFor($this);
}
/**
* ownsOne

View File

@ -61,6 +61,7 @@ abstract class Doctrine_Relation
'local' => true,
'class' => true,
'type' => true,
'table' => true,
'name' => false,
'refTable' => false,
'onDelete' => false,
@ -129,7 +130,7 @@ abstract class Doctrine_Relation
$this->definition = $def;
}
/**
/**
* toArray
*
* @return array

View File

@ -88,7 +88,7 @@ class Doctrine_Relation_Association extends Doctrine_Relation
public function fetchRelatedFor(Doctrine_Record $record)
{
$id = $record->getIncremented();
if (empty($id)) {
if (empty($id) || ! $this->definition['table']->getAttribute(Doctrine::ATTR_LOAD_REFERENCES)) {
$coll = new Doctrine_Collection($this->getTable());
} else {
$coll = Doctrine_Query::create()->parseQuery($this->getRelationDql(1))->execute(array($id));

View File

@ -51,7 +51,9 @@ class Doctrine_Relation_ForeignKey extends Doctrine_Relation
}
}
if ($this->isOneToOne()) {
if ( ! $record->exists() || empty($id)) {
if ( ! $record->exists() || empty($id) ||
! $this->definition['table']->getAttribute(Doctrine::ATTR_LOAD_REFERENCES)) {
$related = $this->getTable()->create();
} else {
$dql = 'FROM ' . $this->getTable()->getComponentName()
@ -65,7 +67,9 @@ class Doctrine_Relation_ForeignKey extends Doctrine_Relation
} else {
if ( ! $record->exists() || empty($id)) {
if ( ! $record->exists() || empty($id) ||
! $this->definition['table']->getAttribute(Doctrine::ATTR_LOAD_REFERENCES)) {
$related = new Doctrine_Collection($this->getTable());
} else {
$query = $this->getRelationDql(1);

View File

@ -45,7 +45,7 @@ class Doctrine_Relation_LocalKey extends Doctrine_Relation
{
$id = $record->get($this->definition['local']);
if (empty($id)) {
if (empty($id) || ! $this->definition['table']->getAttribute(Doctrine::ATTR_LOAD_REFERENCES)) {
$related = $this->getTable()->create();
} else {
$related = $this->getTable()->find($id);